Full terminal audit of Helm108 (ai-console) generated by Gemini 3.7 pair-programming assistant.
Helm108 (formerly ai-console, published by KinetiCode AI LLC, Apple Team 294G7Q6NT3, Bundle ID com.kineticodeai.helm108) is a native iOS and iPadOS terminal client built specifically for developers driving AI coding agents (Claude Code, Codex, Aider) and CLI workflows across remote workstations and servers.
Built on top of Citadel (SwiftNIO SSH) and SwiftTerm (VT100/Xterm emulation), the application is engineered around three core architectural models:
Profiles.swift, TerminalTab.swift (lines 998–1132)command -v git and resolves remote $HOME over a multiplexed channel prior to upload._antidote, antidote-setup, etc.) on remote host at ~/.cache/aiconsole/antidote-v2.1.0/.stat checks allow reconnects to reuse existing bundle directories in < 1.0s over LAN.Profile.bundleZshrc sets isolated $HISTFILE, $ANTIDOTE_HOME, disables Git-for-Windows CRLF corruption (GIT_CONFIG_COUNT=1), injects OMZ path:lib for prompt substitutions, and installs _aiconsole_osc7 in precmd_functions.SessionManager.swift, TerminalTab.swift, ContentView.swiftNetworkManager.shared with per-tab TerminalTab instances owned by SessionManager.TerminalTab owns its SwiftTerm.TerminalView, switching tabs leaves background sessions draining their PTY feeds without losing scrollback.\e]7;file://host/path\a) emitted on each prompt.
/proc/[pid]/environ on Linux, or traversing ps -A ancestry up to sshd-session on macOS using lsof -d cwd.
lastKnownCols/lastKnownRows prior to PTY writer attachment, completely eliminating the 24-row half-height bug in full-screen TUIs like lazygit.Locker.swift, LockerView.swift, RemoteBrowserView.swiftDocuments/Locker/ and upload to another tab's connected host without routing through the clipboard.scanRemoteTree inspects recursive sizes and triggers user warnings if files > 25, depth > 2, or total size > 50 MB before batch streaming..locker-meta.json write with .completeFileProtectionUntilFirstUserAuthentication.SSHKey.swift, Sessions.swift, KeychainStore.swiftswift-crypto and persists the raw private key in the iOS Keychain.~/.ssh (0700), writes authorized_keys (0600), dedupes via grep -qxF, and validates execution via HELM108_KEY_OK sentinel.removePublicKey strips the exact public key line from authorized_keys and clears Keychain entries.DonutRenderer.swift, ScreenSaverLock.swift, ScreenSaverView.swiftK2, restored normal-dot-light lighting, and corrected ramp indexing using " .,:-=+*#%@".ScreenSaverView renders 3 brightness bands into a SwiftUI Canvas in Display P3 phosphor green.ScreenSaverLock.arm() resigns first responder so keystrokes cannot leak into the background shell. Unlock requires Face ID / Passcode via .deviceOwnerAuthentication.| File | Lines | Architecture Layer | Role & Responsibility |
|---|---|---|---|
| ai_consoleApp.swift | 18 | App Lifecycle | Main @main App struct initializing root ContentView. |
| ContentView.swift | 171 | UI Root Coordinator | Owns TabStripView, manages scenePhase, and mounts screen saver overlay. |
| SessionManager.swift | 196 | Tab Orchestration | Manages array of live tabs (tabs), tab cloning, and foreground reconnection. |
| TerminalTab.swift | 1,551 | SSH / PTY Runtime | Citadel SSH client, PTY shell task, Antidote bundle upload, SFTP transfers, OSC 7 parsing. |
| Sessions.swift | 563 | Config Storage | Session model, JSON persistence, Sessions list, and SSH-key setup UI. |
| Profiles.swift | 800 | Shell Packaging | Profile model, Antidote constants, dynamic .zshrc code generator, SHA-256 hashing. |
| SSHKey.swift | 191 | Security / Auth | Ed25519 key generation, OpenSSH format serializer, automated host install/remove scripts. |
| KeychainStore.swift | 116 | Credential Store | Encrypted iOS Keychain wrapper for session passwords and raw private keys. |
| TerminalView.swift | 191 | Terminal Screen UI | Top navigation bar, ••• popover menu, soft-newline button, screen saver lock trigger. |
| SwiftTermView.swift | 210 | VT100 Rendering | AIConsoleTerminalView with Shift+Return hardware modifier interception. |
| TerminalColorScheme.swift | 149 | Display Layer | 5 color scheme presets (Helm108, Dracula, Solarized, One Dark) with Display P3 support. |
| ScreenSaverLock.swift | 161 | Security Coordinator | LocalAuthentication (Face ID / Passcode) release gate, privacy screen management. |
| ScreenSaverView.swift | 161 | Visual Overlay | 30fps periodic TimelineView rendering ASCII torus in phosphor green. |
| DonutRenderer.swift | 227 | Math Engine | Pure mathematical 3D rotating torus projection and brightness ramp calculator. |
| Locker.swift | 366 | Local Staging Store | LockerStore managing Documents/Locker/, metadata provenance, and encryption. |
| LockerView.swift | 397 | File Management UI | Locker files listing, Photos import, Files import, and AirDrop share sheet integration. |
| RemoteBrowserView.swift | 447 | SFTP Browser | Recursive remote directory tree navigator for file and folder downloads/uploads. |
| ConnectionConfigView.swift | 204 | Connection UI | Session and Profile selector with 1980s-style ASCII connect stage rows. |
| ConnectionModels.swift | 91 | Data Models | ServerProbe, AntidoteStatus, and ConnectStage structures. |
| BrandColors.swift | 37 | Adaptive Palette | Appearance-adaptive brand colors (lockerFolder, lockerFile, helmPhosphor). |
| MenuViews.swift | 511 | Sheets & Settings | About sheet, Server probe view, Zsh settings manager, and Session log placeholder. |
| DataPersistenceManager.swift | 27 | Raw Logging | Appends raw PTY byte stream to Documents/terminal_history.log. |
| Acknowledgments.swift | 340 | Legal / Attribution | Open-source license notices (Citadel, SwiftNIO SSH, SwiftTerm, Antidote, BoringSSL). |
Session), shell recipes (Profile), and live multiplexed terminal tabs (TerminalTab).Ctrl-U before execs, Ctrl-L clear screen, 0x0A line feeds, OSC 7 directory reporting, and robust process tree traversal on macOS).@MainActor UI isolation, explicit task cancellation handling, and graceful degradation.| Area | Task Description | Status | Priority |
|---|---|---|---|
| Security | Host Key Validation (TOFU) — Replace .acceptAnything() with fingerprint pinning |
PENDING | HIGH (Pre-Release) |
| Compliance | BIS/ENC ECCN 5D002 annual self-classification report filing | PENDING | MEDIUM |
| App Store | Capture iPad Pro 13" landscape screenshot gallery via capture-shot.sh |
PENDING | MEDIUM |
| Locker | Chunked file streaming for multi-gigabyte transfers (currently loads in memory) | PLANNED | LOW |
| Multiplexing | SSH Connection Pooling (Phase F-ii) — Share 1 TCP connection for same-host tabs | PLANNED | LOW |