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 endusers (developers); other Koder dev tools (Kdev IDE for embedded terminal panes — planned); claudetiles runbook (8 persistent Tilix tiles + Claude sessions)

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 auth

Two 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 via

    server/deploy/install.sh (systemd unit). Today behind Caddy snippet; migration to Koder Jet pending per policies/web-server.kmd.

  • Tag pattern: dev/kterm/v* (per policies/releases.kmd).
  • CHANGELOG: app/CHANGELOG.md.

Operational notes

  • *laude-tiles integration*— kterm is the canonical host for the

    8tile persistent Claude Code session runbook (`infrastructure/claudetiles.md`).

  • *mage clipboard convention*— images saved to ~/temp/ per

    CLAUDE.md directory 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=kterm to all PTYs for AI tools to detect kterm-specific capabilities (Sixel/Kitty image protocol).

Source: ../home/koder/dev/koder/meta/docs/stack/modules/kterm.md