# 1.0.0 (2026-07-12) ### Bug Fixes * adjust key event handling to ensure history navigation works correctly ([7bdfd9c](https://github.com/asepharyana/zesdex/commit/7bdfd9c4c4b8eb4bad7d200a54616843780e48c0)) * **lsp:** add download-tier helpers, progress callback, and persist previous install check ([aac1de8](https://github.com/asepharyana/zesdex/commit/aac1de8af647298e118e6e3cb87436f6f48946cf)) * remove broken test that calls nonexistent Harness::classify ([522e1e3](https://github.com/asepharyana/zesdex/commit/522e1e31f29bf8d36f3adf9787300b414e9acbd1)) * remove hardcoded API key for security reasons ([c36c819](https://github.com/asepharyana/zesdex/commit/c36c819304c2034d4ec0f31a500c8cbb664665b1)) * reset overlay state to None after workflow actions ([ab8b098](https://github.com/asepharyana/zesdex/commit/ab8b098a57a4e5f7c8af77305bd8ef490de76b5c)) * route warnings to file and add in-app toast notifications ([89b63b1](https://github.com/asepharyana/zesdex/commit/89b63b1bc22746071a52ec81a46245e945991b4e)) ### Features * add 'todofinish' tool to mark tasks as completed in the todo list; update system prompts for task execution ([48d2dc3](https://github.com/asepharyana/zesdex/commit/48d2dc3ad6f31bd43d4782dbe6fa0a459b2cde4f)) * add API connection state management and update status display ([d52ee96](https://github.com/asepharyana/zesdex/commit/d52ee967eebfb24885a0079389e7cbe7cd459a75)) * add editing and MCP command handling, enhance SSE streaming with usage tracking ([18a41aa](https://github.com/asepharyana/zesdex/commit/18a41aad48467d5e6e5b9ac748106200587b8fd5)) * add initial codemap documentation and architecture overview; include backend, data, dependencies, and frontend details ([7158d36](https://github.com/asepharyana/zesdex/commit/7158d362fdd3d66f0cc71be3c5a01a48ca17327e)) * add lesson export and import functionality ([c1ad206](https://github.com/asepharyana/zesdex/commit/c1ad206a0020a52218f4bee9d3b5773da2e5e880)) * add memory management tools and utility commands ([fe82840](https://github.com/asepharyana/zesdex/commit/fe82840c03524f4c02e389ff9105668b83a7a28a)) * add support for Router provider and enhance command handling ([9f272d5](https://github.com/asepharyana/zesdex/commit/9f272d5973333605b54f226c42536b62a3c6428b)) * add todo management feature; implement todo content tracking and display in the UI ([8ad0421](https://github.com/asepharyana/zesdex/commit/8ad042139ee0d1591496fc201ea163d950839fa2)) * add turn_events to ToolCtx and implement live state updates in spawn tool ([a59feb2](https://github.com/asepharyana/zesdex/commit/a59feb23c426bc543cf2dd9316e2dfbcdf779943)) * auto-detect provider from ~/.claude/settings.json ([56847f3](https://github.com/asepharyana/zesdex/commit/56847f380a4eca42c9776048796300b53671edc8)) * enhance AppConfig loading to merge default providers and set API key ([a98fdb0](https://github.com/asepharyana/zesdex/commit/a98fdb0c7bf90c586ac054e4e2780b3c2c6ef36b)) * enhance command classification and error handling; improve process checks and credential security ([ac99835](https://github.com/asepharyana/zesdex/commit/ac99835eb44fa3298867354974bcdc0ccda685c5)) * enhance error handling in OAuth URL building and client creation; improve tool argument sanitization ([bb621fd](https://github.com/asepharyana/zesdex/commit/bb621fdff2ed1f28dbaf33024dff9666c5af8e9f)) * enhance lesson management and review system ([2ded2d8](https://github.com/asepharyana/zesdex/commit/2ded2d8bf13990e38d16478ae48cc95a14a12dae)) * enhance memory management tools; improve lesson tracking and update descriptions for clarity ([ce36e93](https://github.com/asepharyana/zesdex/commit/ce36e936a6a3388a143dd33e680fe071fe33bdd1)) * enhance OAuth flow validation and improve security checks; add credential read blocking and git operation safeguards ([8767bee](https://github.com/asepharyana/zesdex/commit/8767beef399d582a49304a4af7e95abb901d42d6)) * Enhance OAuth module and OpenRouter client functionality ([802d967](https://github.com/asepharyana/zesdex/commit/802d9677ae37ebb13b0ae7831480a8dbbd1aba29)) * enhance prompts and validation for tool-call safety; enforce error handling and technical debt awareness ([80a8223](https://github.com/asepharyana/zesdex/commit/80a8223ee38ddc1be6da21c80c5dbcddfb286fbc)) * enhance prompts with detailed programmer description and add workspace tree generation ([d957e8d](https://github.com/asepharyana/zesdex/commit/d957e8d4ced99fd0b026a5837bbdd5cf71b5fb59)) * enhance safety and crash resilience in file operations; add fsync to critical writes and checks for path traversal ([87d0aac](https://github.com/asepharyana/zesdex/commit/87d0aac596121b564f2cc817f6cbadfe56747002)) * enhance safety filters for shell commands by normalizing ANSI-C quoting ([d09e440](https://github.com/asepharyana/zesdex/commit/d09e440e7e6c48ee0840b6c128216392dc10ab67)) * enhance strictness of Rust compiler settings and improve code quality by treating warnings as errors ([5334c25](https://github.com/asepharyana/zesdex/commit/5334c2501be2b723248dfe5ee7938c6fd3f1ca5f)) * enhance subagent context with abort flag and implement tool call timeout ([2856dd7](https://github.com/asepharyana/zesdex/commit/2856dd78b8a0d076949208851de5c890b86c3415)) * enhance system prompt handling and input key actions ([1f18202](https://github.com/asepharyana/zesdex/commit/1f182021fb342b9c6b8a265114cb25b3ee35efa9)) * enhance workspace management and history tracking in application state ([8a11a46](https://github.com/asepharyana/zesdex/commit/8a11a469f96f961a65d4d4ba7f295869fc5e4670)) * implement background API connectivity checks and update state based on connectivity status ([40108de](https://github.com/asepharyana/zesdex/commit/40108defc08224a4e4024998a5a2503c7a04a0d9)) * implement company pipeline orchestration with user commands for full, quick, and skip modes ([2310c2d](https://github.com/asepharyana/zesdex/commit/2310c2df7fa2134b857109c66bc7ad2e66867cea)) * implement interactive lesson management and update command handling ([dc0f1c7](https://github.com/asepharyana/zesdex/commit/dc0f1c76475fd815b75c9fd22441df812275962e)) * implement model management commands and overlays for enhanced user interaction ([662e269](https://github.com/asepharyana/zesdex/commit/662e269f2cdbb4747a4bde0db6111ac960460185)) * implement subagent tool gating and timeout mechanisms for enhanced security and performance ([3b711bb](https://github.com/asepharyana/zesdex/commit/3b711bbf3b696656373843201e17563e32b13883)) * implement workflow findings sharing for inter-agent communication in workflows ([a080957](https://github.com/asepharyana/zesdex/commit/a080957c26fff158bce9be79eee1189e675f5467)) * increase maximum concurrency for parallel agents to enhance performance ([562509b](https://github.com/asepharyana/zesdex/commit/562509b0e0bbf0a2b22cf5ff11eddba68e006a27)) * introduce workflow management tools and commands ([53b0cb2](https://github.com/asepharyana/zesdex/commit/53b0cb271f17326ab6ca4f9d9686ddac05026916)) * **lsp:** add LSP provision progress messages to toast notifications ([b20bb95](https://github.com/asepharyana/zesdex/commit/b20bb95ada5d5d8d7b8ecadf15a45c83bce11acb)) * **lsp:** implement auto-provisioning for language servers ([e78813e](https://github.com/asepharyana/zesdex/commit/e78813ecdb8811564325651d894c789acc7eac13)) * **lsp:** implement LSP client and server management ([abc7a58](https://github.com/asepharyana/zesdex/commit/abc7a58e31474a632e781e848cd5c04f78b9beff)) * register Claude model roles (opus-4-8, sonnet-5, haiku-4-5) with auto-detected provider ([b7c83dc](https://github.com/asepharyana/zesdex/commit/b7c83dcb6591d639bf50d781126d7d384718faea)) * remove InsertChar action and inline character handling; streamline input processing and autocomplete triggers ([55bcfda](https://github.com/asepharyana/zesdex/commit/55bcfda0d6ac761f8d36be8e41167392801358a3)) * remove ModelUse and ModelAdd commands; update command handling and provider configuration ([c948869](https://github.com/asepharyana/zesdex/commit/c948869d359e2980a1cd749120d5f6d75b5d9c25)) * remove ModePicker overlay and related commands; update mode handling and documentation ([32155f8](https://github.com/asepharyana/zesdex/commit/32155f8ea8745943053f008f28be5383845d34f6)) * remove session hub and related commands from the application ([93d1bbb](https://github.com/asepharyana/zesdex/commit/93d1bbb7c1568f97c176c3a16e91749b2d5b7a81)) * **security-sidecar:** implement a security tooling sidecar with tiered installer and protocol ([f638901](https://github.com/asepharyana/zesdex/commit/f6389018f5e3b7a73641e774f4250c540e94ae3d)) * update API key handling to use default if not provided ([71d3494](https://github.com/asepharyana/zesdex/commit/71d349437200f088c60a344cabf10240b76cc411)) * update maximum steps and token limits to usize::MAX; add split_spans_into_lines function for improved chat display ([0cc60c1](https://github.com/asepharyana/zesdex/commit/0cc60c12ced402e5fe6b7ee4c6e4f319ac8fcc71)) * update README with enhanced descriptions and security features; refactor catastrophic guard checks and tool execution handling ([4bfbe1d](https://github.com/asepharyana/zesdex/commit/4bfbe1d1b9540a0ba19701c012b5f8801823efe2))
Zesdex
Autonomous AI coding agent in a terminal-based TUI.
Zesdex is a Rust-powered AI assistant that operates directly in your terminal via a rich TUI interface. It combines large language model intelligence with a comprehensive set of tools to explore, understand, and modify codebases autonomously — with built-in guardrails at every layer.
Features
Core
- TUI Interface — Full-screen terminal UI with chat panel, input bar, and status bar built with ratatui and crossterm.
- Daemon Architecture — Run as a background daemon with client attach/detach via Unix domain sockets. The daemon processes state; clients only render.
- IPC Protocol — Bidirectional state synchronization between daemon and client processes with diff-based updates.
- Provider Agnostic — Configurable AI model providers with dynamic model selection, per-role temperature/token limits, and API key management.
Tool System (34 built-in tools)
| Category | Tools |
|---|---|
| Filesystem | read, write, edit, delete |
| Search | grep (recursive text), glob (file patterns) |
| Shell | bash, bash_output, bash_kill |
| Git | git_operator, git_worktree, git_cred |
| Memory | remember, recall, forget |
| Planning | plan_enter, plan_ready, seqthink |
| Workflow | workflow_run, note_finding, company_pipeline |
| Utility | cd, dir_list, dir_cache_update, pong, todowrite, todofinish |
| LSP | lsp_connect, lsp_diagnostics, lsp_hover, lsp_completion, lsp_definition, lsp_references, lsp_disconnect |
Intelligence
-
Company Pipeline — Autonomous agent orchestration modeled as a company with specialized divisions. The CEO (main agent) automatically delegates work to 5 divisions in sequence:
Strategy → Engineering → Quality → Security → DocumentationEach division has a dedicated role, toolset, and system prompt. Controlled via
/pipeline full|quick|skip. -
Workflow Engine — Orchestrate complex multi-step tasks with parallel sub-agents, pipelines, and phased execution. Spawn independent workers that share findings in real-time.
-
Self-Learning — Persistent memory system that stores lessons, references, and project knowledge across sessions. Memories include provenance tracking, lifecycle management, and scope isolation.
-
Self-Review — Review subagents trigger automatically after each code edit (inline) and at turn completion (background). Three types: code quality, architecture, and security.
-
Self-Healing — On build/test failures, spawns a sub-agent with the error context to autonomously fix issues before reporting them to the user.
-
MCP Support — Model Context Protocol integration for connecting to external AI tool servers.
-
Sequential Thinking — Chain-of-thought reasoning tool for step-by-step problem decomposition.
-
Session Locking — Prevents multiple processes from operating on the same session directory.
Session Management
- Multiple concurrent sessions with history, rewind, and transcript persistence.
- Per-session edit logs with full change tracking.
- Session archival and summary generation.
Architecture
src/
├── main.rs # Entry point: single-process, daemon, or attach mode
├── resources.rs # Embedded resources (help text, system prompts)
├── app/
│ ├── state/ # AppStateRest — immutable-rest state model
│ │ ├── rest.rs # Core state struct
│ │ ├── types.rs # Overlay, Toast, Origin enums
│ │ ├── snapshot.rs # State snapshots for IPC
│ │ ├── diff.rs # Diff-based state synchronization
│ │ ├── runtime.rs # Runtime state mutations
│ │ └── misc.rs # DirCache and miscellaneous state helpers
│ ├── runtime/ # Action dispatch and event loop
│ │ ├── actions/ # Action enum and apply_action reducer
│ │ ├── stream/ # LLM streaming and tool execution
│ │ │ └── tools/ # Tool harness integration
│ │ │ └── turn.rs # Turn orchestration
│ │ ├── event_loop/ # Main event loop and shortsend
│ │ ├── commands.rs # Slash command dispatch
│ │ └── shortsend.rs # Short-lived async send helper
│ ├── mode/ # UI modes and overlays (13 modes)
│ │ ├── bash.rs # Bash panel mode
│ │ ├── editor.rs # Multi-line editor mode
│ │ ├── effort.rs # Effort level selector
│ │ ├── help.rs # Help overlay
│ │ ├── key_input.rs # Raw key input mode
│ │ ├── loading.rs # Loading spinner overlay
│ │ ├── mcp.rs # MCP server management
│ │ ├── quit_confirm.rs # Quit confirmation dialog
│ │ ├── rewind.rs # Session rewind mode
│ │ ├── settings.rs # Settings panel
│ │ ├── todo.rs # Task list overlay
│ │ └── workflow.rs # Workflow visualization
│ ├── harness.rs # Tool harness for agent execution
│ ├── workflow/ # Workflow engine
│ │ ├── script.rs # Workflow script DSL
│ │ ├── engine.rs # Workflow executor
│ │ └── company.rs # Company pipeline orchestrator
│ ├── mcp/ # MCP client manager
│ │ └── manager.rs # MCP server lifecycle and tool exposure
│ ├── subagent/ # Sub-agent management
│ │ ├── spawn.rs # AgentDefinition and spawning
│ │ ├── engine.rs # Sub-agent event loop
│ │ ├── context.rs # Context construction for sub-agents
│ │ └── event.rs # Progress event types
│ ├── bgbash/ # Background bash job management
│ │ ├── job.rs # Background job handle
│ │ └── control.rs # Bash control (bg/fg/kill)
│ ├── lsp/ # LSP client management
│ │ ├── client.rs # LSP client connection wrapper
│ │ └── provisioner.rs # Auto-provisioning of LSP servers
│ └── review/ # Self-review quality system
├── controller/
│ ├── input.rs # Key event → Action mapping
│ └── command.rs # Slash command parser
├── dto/
│ ├── chat/ # Message, ToolCall, Role types
│ │ ├── message.rs # Chat message types
│ │ ├── tool.rs # Tool call/result types
│ │ └── mod.rs
│ └── provider/ # AI provider request/response/usage types
│ ├── request.rs # Provider request schema
│ ├── response.rs # Provider response schema
│ └── usage.rs # Token usage tracking
├── ipc/
│ ├── protocol.rs # ClientRequest, DaemonFrame, StatePayload
│ ├── server.rs # Unix socket server
│ ├── client.rs # Unix socket client
│ ├── conn.rs # Framed connection
│ ├── frame.rs # Length-prefixed frame encoding
│ ├── snapshot.rs # State snapshot serialization
│ └── diff.rs # Binary diff for state sync
├── model/
│ ├── store.rs # File-based storage (~/.config/zesdex/)
│ ├── session.rs # Session CRUD and listing
│ ├── settings.rs # User settings (provider, model, tokens)
│ ├── app_config.rs # Provider definitions and model roles
│ ├── memory.rs # Persistent memory with frontmatter
│ ├── editlog.rs # Edit history tracking
│ ├── msglog/ # Message log (SQLite-backed)
│ │ ├── schema.rs # SQLite schema
│ │ ├── query.rs # Query helpers
│ │ ├── blobs.rs # Large blob storage
│ │ └── summary.rs # Session summarization
│ ├── agent_def/ # Agent definitions (builtin, global, session)
│ │ ├── builtin.rs # Built-in agent profiles
│ │ ├── global.rs # Global agent config
│ │ └── session.rs # Per-session agent config
│ ├── conversation.rs # Conversation helpers
│ └── session_lock.rs # Flock-based session locking
├── service/
│ ├── provider.rs # AI provider abstraction
│ └── oauth/ # OAuth PKCE flow with loopback server
│ ├── loopback.rs # Local HTTP server for OAuth redirect
│ ├── manager.rs # OAuth token manager
│ ├── pkce.rs # PKCE code challenge/verifier
│ └── mod.rs
├── tool/ # 34 tool implementations
│ ├── fs/ # read, write, edit, delete
│ │ ├── read.rs
│ │ ├── write.rs
│ │ ├── edit.rs
│ │ ├── delete.rs
│ │ └── helpers.rs # Path resolution and validation
│ ├── search.rs # grep, glob
│ ├── shell.rs # bash
│ ├── bash_tools.rs # bash_output, bash_kill
│ ├── git_operator.rs # git operations
│ ├── git_worktree.rs # git worktree management
│ ├── git_cred.rs # git credential store/get/erase
│ ├── memory/ # remember, forget, recall
│ │ ├── remember.rs
│ │ ├── forget.rs
│ │ └── recall.rs
│ ├── plan.rs # plan_enter, plan_ready
│ ├── seqthink.rs # Sequential thinking
│ ├── workflow.rs # workflow_run, note_finding
│ ├── utility/ # cd, dir_list, dir_cache_update, pong, todowrite, todofinish
│ │ ├── cd.rs
│ │ ├── dir_list.rs
│ │ ├── dir_cache_update.rs
│ │ ├── pong.rs
│ │ ├── todowrite.rs
│ │ └── todofinish.rs
│ ├── lsp/ # LSP tools (connect, diagnostics, hover, etc.)
│ │ └── mod.rs
│ └── shell_filter/ # Shell output filtering (credentials, git)
│ ├── credentials.rs
│ ├── git.rs
│ └── mod.rs
└── view/ # TUI rendering
├── chat.rs # Chat transcript with markdown
├── markdown.rs # Markdown → ratatui spans
├── status.rs # Status bar
├── theme.rs # Color scheme
└── workflow.rs # Workflow visualization
Usage
# Run in single-process mode (default)
zesdex
# Run as a background daemon
zesdex --daemon
# Attach to a running daemon session
zesdex --attach <session-id>
# Set log level
RUST_LOG=debug zesdex
Key Bindings
| Binding | Action |
|---|---|
Ctrl+Q |
Quit |
Ctrl+H |
Help overlay |
Ctrl+P |
Settings overlay |
Ctrl+B |
Bash panel |
Ctrl+S |
Session hub |
Ctrl+T |
Task list |
Ctrl+W |
Workflow view |
Ctrl+K |
Key input mode |
Esc |
Cancel / back |
Tab |
Autocomplete |
↑/↓ |
History / navigation |
Scroll |
Mouse scroll in chat |
Slash Commands
| Command | Description |
|---|---|
/help |
Show help |
/clear |
Clear transcript |
/model |
Select AI model provider |
/pipeline |
Show current pipeline mode |
/pipeline full |
Force full company pipeline (5 divisions) on next request |
/pipeline quick |
Force quick pipeline (3 divisions) on next request |
/pipeline skip |
Skip pipeline — handle next request directly |
/exit |
Exit application |
/settings |
Open settings |
Any text |
Sent to the AI assistant as a prompt |
Configuration
All configuration lives in ~/.config/zesdex/ (or platform equivalent via the dirs crate).
| File | Purpose |
|---|---|
settings.json |
Provider selection, model, temperature, max tokens, review settings, workflow concurrency |
app_config.json |
AI provider definitions (name, API base URL, auth type, default model) |
memory/ |
Persistent lesson and reference storage (Markdown with YAML frontmatter) |
sessions/ |
Per-session transcripts, edit logs, and activity data |
run/ |
Unix domain sockets for daemon mode |
Provider Configuration
Providers are defined in app_config.json:
{
"providers": {
"my-provider": {
"api_base": "https://api.example.com/v1",
"api_key_env": "MY_API_KEY",
"default_model": "model-name"
}
},
"model_roles": {
"default": {
"provider": "my-provider",
"model": "model-name",
"max_tokens": 8192,
"temperature": 0.7
}
},
"default_provider": "my-provider",
"default_model": "model-name"
}
Settings
Key settings in settings.json:
| Setting | Default | Description |
|---|---|---|
review_enabled |
true |
Enable self-review after tool execution |
review_max_lessons_per_run |
5 |
Max lessons loaded per review cycle |
adaptive_review_max_skip |
3 |
Consecutive passes before skipping review |
verify_command |
null |
Optional command to verify changes |
workflow_max_concurrency |
5 |
Max parallel sub-agents in workflows |
session_archive_enabled |
true |
Auto-archive completed sessions |
Installation
Prerequisites
- Rust 2021 edition toolchain (rustup)
Build from Source
git clone <repository-url>
cd zesdex
cargo build --release
./target/release/zesdex
Development
Commit Convention
Project ini menggunakan Conventional Commits untuk otomatis menentukan versi rilis (melalui semantic-release).
Format:
<type>(<scope>): <description>
[optional body]
[optional footer]
<type> — menentukan bump version:
| Type | Bump | Keterangan |
|---|---|---|
feat |
minor | Fitur baru |
fix |
patch | Perbaikan bug |
chore |
patch | Tugas maintenance, refactor ringan |
docs |
patch | Perubahan dokumentasi |
refactor |
patch | Refactor kode (tanpa perubahan fungsional) |
test |
patch | Penambahan atau perbaikan test |
style |
patch | Perubahan formatting, whitespace, dll |
perf |
patch | Optimasi performa |
ci |
patch | Perubahan CI/CD |
BREAKING CHANGE pada body commit → major (apa pun typenya).
Contoh:
feat(agent): add workspace-aware file search
Implement context-aware search scoped to current workspace directory.
BREAKING CHANGE: search results now filter by workspace scope.
fix(ipc): handle partial frame on unix socket reconnect
chore: update rustls to 0.23
Release Workflow
Push ke branch main akan memicu:
- CI —
cargo build --release+cargo test - Semantic Release — analisis commit → update
Cargo.toml+CHANGELOG.md→ git tag → GitHub Release dengan binary
License
See LICENSE for details.