Kterm
Koder Term — products/dev/kterm/app
Cross-platform tiling terminal emulator with persistent sessions, SSH multiplexing, image clipboard, and AI-CLI integration.
Role in the stack
| Area | Sector | Consumers |
|---|---|---|
products/dev |
terminal | end |
Primary couplings
| Module | Nature |
|---|---|
engines/sdk/koder_kit |
Flutter SDK — tema, layout, navigation, error reporter, update service, sign-in, settings tiles. First consumer of KoderUIStylePicker (v0.10.0, ETAPA 4.3). |
services/foundation/id |
Koder ID — OIDC auth for web access (kterm.koder.dev). Sessions are private and per-user. |
services/foundation/reporter |
Error reporting backend — wired via KoderErrorReporter (ticket #010 pending). |
services/foundation/keys |
KoderKeys — session-encryption key management for persistent storage at rest (ticket #018 pending). |
services/foundation/katalog |
Hub depot — kpkg signing + asset registry for releases (depends on katalog #013 deploy). |
infra/net/jet |
Reverse proxy at kterm.koder.dev (Koder Jet, sites.toml on s.forge). |
infra/observe |
Telemetry pipeline — traces + counters via KoderTelemetry (ticket #017 pending). |
xterm (third-party) |
Terminal emulator widget for Flutter desktop. |
flutter_pty (third-party) |
PTY allocation on LinuxmacOSWindows. |
dartssh2 (third-party) |
SSH client + multiplexer. |
Status
*1.32.1 (20260513)*— in development. and web (browser via Go server bridge); mobile (Android/iOS) planned.
| Feature | Status |
|---|---|
| Tiling layout (split HV2x2, drag-drop) | ✅ |
| Persistent sessions (survive disconnect/restart) | ✅ |
Image clipboard (paste screenshot → ~/temp/, auto-insert path) |
✅ |
Web access (kterm.koder.dev via Go server) |
✅ |
| Koder ID OIDC auth (web) | ✅ |
| AI CLI detection (Claude Code / Codex / Gemini / Aider) | ✅ |
| Profiles (fonts, colors, cursor, scrollback, triggers, badges) | ✅ |
| SSH client + multiplexer | ✅ |
| Quake mode (F12 toggle visibility) | ✅ |
| Auto-update toggle (KoderUpdateService) | ⏳ #009 |
| Error reporting toggle (KoderErrorReporter) | ⏳ #010 |
| Hub multi-platform release pipeline | ⏳ #014 |
| Sessions encryption at rest | ⏳ #018 |
| Web server rate limiting | ⏳ #019 |
| Android / iOS apps | 🗓 planned |
Architecture
Desktop App (Flutter)
└── PTY → Local shell
Web Browser (xterm.js)
└── WebSocket → Go Server bridge → PTY → Shell
└── Session persistence (~/.koder-kterm/sessions/)
└── Koder ID OIDC authTwo surfaces, one product: the Flutter app talks directly to a local PTY; the web browser talks WebSocket to a Go server (server/ and bridge/cmd/kterm-bridge/) that owns the PTY and persists session state. Both surfaces share profiles, themes, triggers, and the Koder Stack SDK.
Repository layout
products/dev/kterm/
├── app/ ← Flutter (mobile/desktop/web)
│ ├── lib/
│ │ ├── main.dart, app.dart
│ │ ├── screens/ ← preferences, profile_editor, terminal
│ │ ├── widgets/ ← tiling, terminal, ssh, paste, session
│ │ ├── services/ ← pty, ssh, ssh_multiplexer, clipboard,
│ │ │ notification, storage, search, trigger,
│ │ │ ai_integration, image_protocol, dbus,
│ │ │ quake, profile_switch
│ │ ├── providers/, models/, theme/, l10n/, core/
│ │ ├── android/, ios/, linux/, macos/, windows/
│ │ ├── server/ ← Go web server bridge
│ │ ├── landing/ ← kterm.koder.dev product landing
│ │ └── docs/, assets/
│ └── backlog/ ← pending/in-progress/done tickets
└── bridge/
└── cmd/kterm-bridge/ ← Go bridge binary
└── install/Releases
- Hub depot: currently linuxx86_64 only; macOSWindows/web pending
(#014).
- Server bundle: Go binary built from
server/, deployed viaserver/deploy/install.sh(systemd unit). Today behind Caddy snippet; migration to Koder Jet pending perpolicies/web-server.kmd. - Tag pattern:
dev/kterm/v*(perpolicies/releases.kmd). - CHANGELOG:
app/CHANGELOG.md.
Operational notes
- *laude-tiles integration*— kterm is the canonical host for the
8
tile persistent Claude Code session runbook (`infrastructure/claudetiles.md`). - *mage clipboard convention*— images saved to
~/temp/perCLAUDE.mddirectory rule (avoid/tmp/tmpfs limit). Cleanup/ rotation pending #012. - *I env vars*— kterm exports
KODER_TERM=1,KODER_TERM_VERSION,KODER_TERM_IMAGES=1,TERM_PROGRAM=ktermto all PTYs for AI tools to detect kterm-specific capabilities (Sixel/Kitty image protocol).