Terminuz - The Open Source AI Coding Agent
Terminuz is a local, permission-aware, multi-provider coding agent for the terminal. It understands repositories, executes tools, works with multiple LLM providers, and keeps control of filesystem and shell operations with the user.
The project was previously published as DeepCode. Existing .deepcode/
configuration, DEEPCODE_* variables, sessions, and custom agents remain
supported during the migration window. The deepcode-ai compatibility package
is supported through 2027-01-08.
Terminuz was built primarily with OpenAI Codex. Local evidence preserves 51
product-development sessions starting with the repository's creation on May 7, 2026. The first Codex session initialized the repository and produced its first
seven commits. The current history remains intact: 406 of 425 commits (95.5%)
use the DeepCode author identity configured by Codex before the project was
renamed to Terminuz.
For the OpenAI Build Week, GPT-5.6 was used to add health-aware provider
routing. Failover now skips unusable targets, applies cooldowns after transient
failures, honors longer Retry-After values, recovers automatically, and emits
sanitized provider.route events. See the
Build Week evidence and demo kit.
- Interactive Ink TUI with streaming, approvals, diff previews, themes, and Vim keybindings
- Non-interactive
terminuz runmode for scripts and CI - Anthropic, OpenAI, DeepSeek, Groq, Ollama, OpenRouter, OpenCode, and MCP
- Filesystem, shell, git, ripgrep, test, lint, and LSP tools
- GitHub authentication, issues, pull requests, review, and merge workflows
- Foreground and background subagents
- Context compaction, token budgets, provider failover, and per-mode routing
- Path policies, approval gateway, audit logs, and secret redaction
Terminuz requires Node.js 22 or newer.
npm install -g terminuz
terminuz --versionUsing pnpm:
pnpm add -g terminuzStable channel:
npm install -g --tag stable terminuz
pnpm add -g terminuz@stableterminuz init
terminuzInside the TUI:
/setup configure provider, API key, and model
/provider choose a provider
/model choose a model
/doctor validate the local environment
Scriptable setup:
terminuz config set defaultProvider deepseek
terminuz config set defaultModels.deepseek "deepseek-chat"
terminuz config set providers.deepseek.apiKey "<your-key>"
terminuz doctorEnvironment variables:
export TERMINUZ_PROVIDER=anthropic
export TERMINUZ_MODEL=claude-sonnet-4-5
export ANTHROPIC_API_KEY="<your-key>"
terminuzterminuz
terminuz chat
terminuz run "fix the failing tests" --yes
terminuz run "refactor the auth module" --mode plan
terminuz review
terminuz doctor
terminuz update
terminuz cache tmp clear
terminuz github login
terminuz github prs
terminuz github review 42
terminuz subagents run \
--task "audit the auth module" \
--task "audit the billing module" \
--concurrency 2 --yesTerminuz writes project configuration and runtime data under .terminuz/.
Provider API keys and GitHub tokens are not stored there. Secrets entered with
the TUI or terminuz config set are kept in a private, project-scoped entry in
the operating system's user configuration directory. Print its location with:
terminuz config credentials-pathOn Linux the default is ~/.config/terminuz/credentials.json. The directory is
created with mode 0700 and the file with mode 0600. Existing plaintext
credentials in .terminuz/config.json or .deepcode/config.json are migrated
on first load, removed from the project file, and related transient caches are
cleared. Exact copies in existing sessions, telemetry, and logs are redacted. A non-secret .terminuz/credential-scope identifier keeps the secure
entry associated when a project directory is moved. Environment variables remain runtime-only, and apiKeyFile can point
to a protected file outside the project. Secret-bearing environment variables
are removed from shell, Git, LSP, and other child-process environments.
{
"defaultProvider": "anthropic",
"defaultModels": {
"anthropic": "claude-sonnet-4-5"
},
"permissions": {
"read": "allow",
"write": "ask",
"shell": "ask",
"mcp": "ask"
},
"mcpServers": []
}Resolution order:
- explicit CLI config path;
TERMINUZ_*environment variables;- legacy
DEEPCODE_*variables; .terminuz/config.json;- legacy
.deepcode/config.json; - defaults.
Terminuz writes new state to .terminuz/ and does not delete .deepcode/.
The only automatic legacy-file change is removal of plaintext credentials after
they have been copied successfully to the protected user credential store.
See the configuration reference and
rebranding roadmap.
npm uninstall -g deepcode-ai
npm install -g terminuz
terminuzDuring the transition:
deepcode-airemains a compatibility package;deepcodeanddeepcode-aiinvoke Terminuz and display a migration notice;.deepcode/config.jsonis used when.terminuz/config.jsonis absent;DEEPCODE_*variables remain lower-priority aliases;- legacy user and project sessions are read without deleting or moving them.
The deepcode-ai wrapper remains supported through 2027-01-08. Do not delete
.deepcode/ until your migrated project and sessions have been verified.
git clone https://github.com/N1ghthill/terminuz.git
cd terminuz
corepack pnpm install
corepack pnpm build
corepack pnpm devValidation:
corepack pnpm validateRepository layout:
apps/terminuz- publishable Terminuz package and entrypointapps/deepcode-legacy- temporarydeepcode-aicompatibility packagepackages/cli- commands and Ink TUIpackages/core- agent runtime, providers, tools, security, and integrationspackages/shared- schemas, identity constants, and shared contractsdocs- product and engineering reference
- Documentation index
- Architecture
- Security model
- Tool system
- Configuration
- Terminuz rebranding roadmap
- Production readiness evidence
The Ink-based terminal UI is adapted from
Qwen Code under Apache 2.0. The agent
architecture also draws inspiration from google-gemini/gemini-cli.
Terminuz adds its own multi-provider runtime, permission-aware tool execution, local intent handling, MCP and GitHub integrations, provider orchestration, token budgets, project discovery, and subagent workflows.
Terminuz is released under the MIT License. Adapted components remain subject to their respective licenses.
