Terminal-first AI runtime for commands, chat, editing, tools, jobs, agents, and local workflows.
Docs: https://term-llm.com
With the release installer (recommended):
curl -fsSL https://raw.githubusercontent.com/samsaffron/term-llm/main/install.sh | shOr with Homebrew:
brew install samsaffron/tap/term-llmFor a source build, clone the repository and build from its root. This requires Go, Node.js 24 or newer, npm, and Make:
git clone https://github.com/samsaffron/term-llm.git
cd term-llm
make build
./term-llm versionmake build installs the locked frontend dependencies when needed, generates the embedded web UI, and then builds the Go binary with the current version, commit, and UTC build time embedded. The generated frontend bundles are intentionally not checked into Git, so plain go build from a fresh checkout will fail until make frontend has run.
go install github.com/samsaffron/term-llm@latest cannot build this repository: in addition to the generated frontend prerequisite, the application intentionally uses local replace directives for the owned Bubble Tea, Ultraviolet, and reflow modules. Use the installer/release archive or make build from a complete checkout.
Shell completions are available for Bash, Zsh, Fish, and PowerShell. Fish users can install an auto-loaded completion file with:
term-llm config completion fish --installSee the installation guide for every shell and manual setup.
No API key needed if you use Zen:
term-llm exec --provider zen "list files"
term-llm ask --provider zen "explain git rebase"
term-llm chat
term-llm serve webIf you already have a provider key:
export ANTHROPIC_API_KEY=your-key
# or OPENAI_API_KEY / GEMINI_API_KEY / OPENROUTER_API_KEY / XAI_API_KEY / NEARAI_API_KEY / SAMBANOVA_API_KEYThe detailed docs live at https://term-llm.com and are authored in Markdown in this repo, then built with Hugo.
Common entry points:
- Configuration
- Providers and models
- Web UI and API
- Web UI widgets
- Search
- Usage
- Agents
- Skills
- MCP servers
- Memory
- Jobs
- Text embeddings
- Audio generation
- Music generation
- Usage tracking
- Transcription
- Notifications
The root go test ./... command does not cross Go module boundaries. During development, use Go's standard short mode to skip subprocess-heavy integration tests:
go test -short ./...Before submitting or merging, generate the frontend and run the complete root suite plus the owned nested-module verification:
make build
go test ./...
go vet ./...
scripts/verify_nested_modules.sh
VERIFY_RACE=1 scripts/verify_nested_modules.shThe terminal event loop/runtime and cell/diff/output renderer under internal/terminal/ are deliberately reduced, application-owned source modules rather than external dependency copies. They preserve the Bubble Tea and Ultraviolet module paths only because Bubbles and Huh require exact import and concrete type identity. See internal/terminal/README.md for the ownership contract, architecture, provenance, selective-sync workflow, fuzz/benchmark commands, and cross-build matrix. Run scripts/cross_build_owned_terminal.sh when changing platform- or release-sensitive terminal code.
MIT
