Kode App — Consumer AI Chat Client
- *rea:*AI
- *ath:*
services/ai/kode/app
- *ind:*Flutter multiplatform app
- *ersion:*1.7.7
- *tatus:*Active
Role in the stack
Kode is the consumerfacing AI client of the Koder stack. It connects endusers to ai/gateway for unified access to all AI providers (Claude, GPT-4o, Gemini, Llama, etc.) through a single, polished interface. Unlike ai/ai (the SaaS admin hub), Kode is a personal AI assistant — think of it as Koder's answer to ChatGPT and Claude.ai.
Core capabilities
| Capability |
Details |
| Multi-model chat |
Claude, GPT4o, Gemini 2.5 Pro, Llama 4 Maverick; autoselect via gateway benchmarks |
| Conversation folders |
Sidebar sections for folders and unfiled chats; createdeletemove UI backed by persisted folderId |
| Multimodal input |
Text, images, video, audio, PDFs, 30+ code/doc formats |
| Streaming |
Server-Sent Events (SSE) via ai/gateway |
| Code execution |
PythonJSshell in gateway sandbox (POST /v1/code/execute) |
| Screenshot capture |
Full-screen capture on Linux (grim/scrot), macOS (screencapture), Windows (PowerShell) |
| Local shell exec |
AI executes commands on user's machine; percommand confirmation dialog; optin |
| Yolo Mode |
Autoapprove all tool calls without dialogs; autodisables after 30 min idle; Desktop only |
| Dry-Run Mode |
Preview tool calls (returns simulated result, does not execute); Desktop only |
| Computer use |
Agentic desktop loop: screenshot → AI → input action → repeat; xdotool/osascript |
| Desktop ambient context |
Chronicle extended for Desktop: git state (branchstatuslog) + last 20 shell commands injected as context on each message |
| Canvas/Artifacts |
Code and HTML outputs in live side panel |
| Voice I/O |
Speechtotext + TTS |
| Chat modes |
Default / Code / Ask / Architect — modespecific systemprompt prefix injected per conversation; chip row selector above input |
| Custom personas |
Systemprompt personas; usercreated |
| Chronicle |
Memory injection, secure local memory persistence, clipboard watch, file watcher, screen capture for context |
| Embeddable replay |
<kode-conversation> renders Kode transcripts in Flow and other Koder products |
| Public share links |
Signedin conversations publish to durable unlisted readonly URLs on kode.koder.dev/share/{id} |
| Humanized errors |
Shared HumanizedError model and reusable detail UI expose stable KODE-... IDs while hiding raw technical failures by default |
| Invokable subagents |
Named agent personas (e.g. @reviewer, @coder) invoked via @<name> <task> in chat; autocomplete panel; per-conversation dispatch; distinct from custom personas |
| LSP integration |
Desktoponly: attaches language servers (gopls, pyright, dartls, rustanalyzer, etc.) and injects diagnostics into the LLM system prompt; lsp_hover tool lets the AI query hover info; perconversation lspEnabled toggle; LspServersScreen in Settings |
| Koder Flow git context |
Attach a Gitea repo to any conversation via PAT auth; file tree injected into system prompt; + Repo chip in chat toolbar; RepoPickerSheet bottom-sheet browser; GiteaProvider (REST API v1); secure PAT storage |
| BYOK |
User-supplied API keys stored in platform secure storage and forwarded to gateway |
| Self-update |
Checks Koder Hub for new versions; toggle in Settings (default ON, 24h throttle) |
| Find in conversation |
Ctrl+F fulltext search bar; amberhighlighted focused match; ↑/↓ navigation |
| PDF export |
Export single or all conversations as paginated PDF |
| Keyboard shortcuts |
Ctrl+NKFEPShift+CEscapeEnter; documented in Ctrl+ panel |
| Koder ID login |
Account section in Settings; OIDC sign-in/out; user name + email display |
Primary couplings
| Service |
Relationship |
ai/gateway |
All AI requests; code execution; tool calls |
services/ai/kode/platform |
Publishes public conversation share links and renders read-only shared transcripts |
foundation/id |
OIDC auth (Resource Owner Password Credentials + refresh) |
dev/store |
Self-update checks; Koder Hub SDK |
engines/sdk/koder_kit |
App shell integration: KoderApp, auth/session plumbing, theming, update checks |
ai/voice |
TTS and STT backend (optional) |
engines/sdk/js |
<kode-conversation> Web Component for transcript replay |
Architecture
lib/
core/ Constants, theme, GoRouter
models/ Message, Conversation, Folder, Attachment, AIModel, Persona, ToolCall
services/ AIService, AuthService, LocalExecutionService,
ScreenCaptureService, ComputerUseService, VoiceService,
CodeRunnerService, DocumentService, BuiltinToolsService,
ApiKeyService, MemoryService, SubagentsService,
SlashCommandsService, PluginsService, McpClientService,
LspService
providers/ Riverpod 3: settings, models, chat, conversation, localExec,
computerUse, voice, image/video gen, persona, memory, API keys,
subagents, slash commands, plugins, MCP servers, LSP
screens/ HomeScreen, ChatScreen, SettingsScreen, LoginScreen,
ComputerUsePanel, MemoryBrowserScreen, SubagentsScreen,
SlashCommandsScreen, PluginsScreen, McpServersScreen,
LspServersScreen
widgets/ ChatInput, MessageBubble, CodeBlock, ArtifactPanel,
ModelSelector, AttachmentPreview, VideoPlayerWidget,
ErrorMessageView, KodeUserBadge
| Widget |
Where |
Notes |
KoderSignInButton |
login_screen.dart PKCE + ROPC flows |
Adopted in #084 slices 1+2 |
KoderUserBadge (via KodeUserBadge adapter) |
home_screen AppBar narrow + chat_screen header wide |
AuthUser → KoderUser adapter in widgets/user_badge.dart (#084 slice 3) |
KoderAuthGate |
not adopted |
requires AuthService → KoderAuth migration; tracked as #086 |
*tack:*Flutter 3.41 · Dart 3.11 · Riverpod 3 · GoRouter 17 · Material 3
| Platform |
Status |
Binary |
| Linux |
✅ Shipping |
.deb |
| Android |
✅ Shipping |
.apk |
| Web |
✅ Shipping |
kode.koder.dev |
| Windows |
✅ Shipping |
.msix |
| macOS |
🔧 Build pending |
.dmg |
| iOS |
🔧 Build pending |
TestFlight |
Computer Use — security model
Computer Use and Local Execution are *ptin only*(disabled by default). The user must explicitly enable them in Settings → Tools with a security warning dialog. Each shell command shows a confirmation dialog unless the user grants sessionwide permission. Computer Use additionally requires Local Execution to be enabled first. The agentic loop runs max 50 steps with a 2 s minimum delay between actions.
Changelog highlights
| Version |
Date |
Summary |
| 1.7.3 |
20260509 |
Koder Flow git integration: PAT auth, GiteaProvider (REST API v1), RepoPickerSheet, file tree injected in system prompt, + Repo chip in chat toolbar, Conversation.gitRepoUrl field |
| 1.7.2 |
20260509 |
Slash command autocomplete panel (/ triggers dropdown of built-in + custom commands); Undo button on last assistant bubble dispatches /undo |
| 1.7.1 |
20260509 |
Invokable subagents (@name dispatch + autocomplete panel); LSP integration (LspService, goplspyrightrustanalyzer/dartls, diagnostics→systemprompt, lsp_hover tool, perconversation toggle, LspServersScreen); Riverpod 2→3 migration for 4 providers (MCPpluginsslash-commands/subagents) |
| 1.5.1 |
20260427 |
Request timeout (10s models, 30s stream); settings slider debounce; token usage chip in message bubble; log viewer in Settings; TTFT/latency logging; BYOK cache invalidation on key change |
| 1.5.0 |
20260427 |
Streaming write batching (no per-token storage write); stream debounce for all paths; web notification fallback; persona via StorageService; command sanitizer hardening (+9 patterns); unawaited memory error logging |
| 1.4.9 |
20260427 |
Model list cache (24h TTL); structured logging (AppLogger + named loggers); error catalog (KodeErrors constants, AIException type, docstechnicalerrors.md) |
| 1.4.8 |
20260427 |
Chat modes (DefaultCodeAsk/Architect) — mode chip row above input, persisted per conversation, system-prompt prefix injection |
| 1.4.7 |
20260427 |
Thinking tokens & reasoning effort settings |
| 1.4.6 |
20260427 |
Streaming debounce; local exec danger warnings |
| 1.4.5 |
20260427 |
Desktop push notifications (Linux/macOS) |
| 1.4.4 |
20260427 |
Yolo mode, dry-run mode, desktop ambient context, humanized errors |
| 1.4.3 |
20260424 |
Flow and Koder Hub release with Android APK and Linux .deb assets; public share links; web release build restored; secure BYOK and Chronicle storage; folder UI exposed |
| 1.4.2 |
20260423 |
PKCE auth implementation and secure token storage |
| 1.4.1 |
20260422 |
Account section in Settings (Koder ID sign-in/out); /memory CLI; Chronicle toggles |
| 1.4.0 |
20260422 |
Screenshot capture, local shell execution, computer use agent |
| 1.3.7 |
20260422 |
App icon restored to official triskelion |
| 1.3.4 |
20260422 |
Auto-select model, BYOK API keys |
| 1.3.2 |
20260422 |
Real OIDC auth (Koder ID) |