terminal-jarvis
v0.1.19
Published
Data-driven harness switcher for AI coding agents
Maintainers
Readme
Terminal Jarvis
Command center for orchestrating context switching between coding-agent harnesses
Safe Testing Recommended: Terminal Jarvis is a harness for AI coding tools that can modify files and execute commands. For the safest experience, test in a remote development environment such as GitHub Codespaces, Coder, DevPod, or Google Colab.
Registries that don't animate GIFs render the static frame docs/demo-tui.png; see docs/demo.md for how both are recorded.
Install
Package mechanics, supported platforms, and update behavior: Installation.
# Cargo
cargo install terminal-jarvis
# Cargo binary name is terminal-jarvis; add an alias if you want a short call:
# echo 'alias tj=terminal-jarvis' >> ~/.bashrc
# npm
npm install -g terminal-jarvis
# The npm package also installs a tj shim, so you can call either:
# terminal-jarvis list # or tj list
# Homebrew
brew install BA-CalderonMorales/homebrew-terminal-jarvis/terminal-jarvisQuick Start
Inspect and safely gate catalog descriptors for Claude, Gemini, Qwen, Pi, Droid and a variety of other AI assistants from one terminal interface. The modes, the launch guards, and the full command surface: Usage.
# Open the interactive switcher (bare tj on a terminal does the same)
terminal-jarvis tui
# List every coding agent
terminal-jarvis list
# Inspect a harness
terminal-jarvis show opencode
# Preview a capability command
terminal-jarvis plan codex headless
# Select and verify the active harness
terminal-jarvis use opencode
terminal-jarvis current
terminal-jarvis check
# Optional: block harness commands until Trivy clears this workspace
terminal-jarvis gate enable trivy
terminal-jarvis gate statusCommands
Commands run in one of two ways: headless (terminal-jarvis <command>) or
inside the interactive switcher (terminal-jarvis tui), and every command is
the same however you reached the tool:
- Installed globally (npm, Homebrew, or Cargo):
terminal-jarvis list/tj list - No install -- run on demand from anywhere:
npx terminal-jarvis list - Built from source (this repository):
cargo run -- list
First time here? No install needed -- npx terminal-jarvis tui opens the
switcher directly.
Headless (terminal-jarvis <command> / tj <command>) -- one command per
invocation, for scripts, CI, and one-shot tasks:
| Command | Purpose |
|---|---|
| list | Show all coding agents |
| check | Report binary + env readiness |
| show <harness> | Inspect a harness's capabilities |
| install <harness> | Install a harness |
| update [<harness>] | Upgrade a harness |
| plan [harness] <capability> | Preview the shell command |
| use <harness> / current | Select / show active harness |
| run [harness] [capability] [args...] | Execute a capability |
| security [status\|audit\|<harness>] | Security posture |
| gate [status\|list\|enable\|disable\|run] | Optional local security gate |
| version [--verbose] / --version / -v / --info | Version info |
| self-update [--dry-run] / --update | Update Terminal Jarvis or print the update command |
| config show | Active config state |
| auth help <harness> | Credential setup guidance |
| [harness] [args...] | Pass-through to harness binary |
Interactive (terminal-jarvis tui / bare tj on a terminal) -- the
chat-style switcher with the numbered picker and readiness dashboard. Every
headless command above also works here, plus:
| Command | Purpose |
|---|---|
| tui | Open the switcher |
| home | Back to the welcome frame (works as clear too) |
| exit | Leave the switcher |
Layout
The repository is a few small planes, and every Rust domain is bucketed the same way -- once you can read one, you can read them all.
src/ # the std-only Rust CLI
├── main.rs # entry point; lib.rs is the crate root
├── contracts/ # the shared data model (Harness, capabilities)
├── cli/ # parsing, guards, dispatch, tables, help
├── catalog/ # loads and validates the data plane
├── context/ # platform, distribution, active-harness state
├── diagnostics/ # readiness reports, probes, PATH resolution
├── gates/ # optional local security gate (Trivy)
├── runtime/ # executes harness capability commands
├── security/ # credential and effect posture
└── tui/ # the interactive switcher (chat-style shell)harnesses/<agent>/ # the data plane: one folder per coding agent
├── index.toml # name, display, binary, env requirements
├── download/index.toml # install without sudo
├── update/index.toml # upgrade without interactive auth
├── headless/index.toml # non-interactive command mode
├── version/index.toml # print installed agent version
├── stats/index.toml # local agent statistics
├── models/index.toml # list available models
├── security/index.toml # sandbox and approval settings
├── ui/index.toml # interactive terminal UI
└── yolo/index.toml # bypass safeguards (dangerous)tests/ # integration tests, one binary per domain
scripts/bash/ # automation: catalog, delivery, release, verify
docs/ # decisions, contracts, usage, demo, legacy
build/ # the build script only
npm/ homebrew/ # distribution launchers and formulaeEach Rust domain inside src/ keeps the same shape: index.rs as the public
face, logic/ for behavior, structs/ for data, tests/ for proof, and
every file stays at 100 lines or fewer.
Docs
Browse the whole folder from the docs index. What this is for, and the catalog truth behind it: What is this?.
| Document | What | |---|---| | Maintainer guide | The security model and maintainer notes | | Installation | Package mechanics, supported platforms, update behavior | | Usage | Headless vs interactive, launch guards | | Capability contract | Full breakdown of the 9 capabilities | | Security gates | Optional Trivy scan behavior and configuration | | Troubleshooting | Triage blocked scans, failed installs, and local issues fast | | Cataloged agents | All 25 descriptors and support caveat | | Support matrix | All 225 capability truth rows | | Development | Architecture, verification, and release artifacts | | Demo | The recording, the agent-handover script, making new demos | | Legacy notes | Aliases, plain output behavior, removed experiments |
