Lenos is a terminal AI coding assistant for the ttal ecosystem.
It runs agents in a real shell because bash is all you need. File edits happen
through CLIs such as src; web lookup happens through web; skills are found
and read through skill; project context comes from project; session goals
are managed through goal. Lenos keeps the
model-facing protocol small: Markdown for prose, <run> blocks for bash calls,
and a built-in sandbox around execution.
That simplicity is the point. Compared with native tool-call protocols, the run protocol avoids provider-specific JSON schemas and typically cuts tool protocol tokens by 40%-60%. Stable prompt prefixes, compact runtime context, and the session journal make high cache hit rates easy; in daily use with DeepSeek V4 Pro, recent cache hit rates have been in the 98-99% range.
curl -fsSL https://github.com/tta-lab/lenos/releases/latest/download/install.sh | shThe installer supports macOS and Linux on x86_64 and arm64. It installs Lenos
to ~/.local/bin and also installs the Organon CLIs that Lenos prompts use:
src, web, skill, project, and goal.
Linux sandboxing requires bubblewrap (bwrap). Install it with your distro
package manager before running Lenos if it is not already present.
Add ~/.local/bin to your PATH if needed:
export PATH="$HOME/.local/bin:$PATH"- Built-in sandbox: command execution is constrained by the Temenos sandbox SDK without a separate daemon.
- Simple run protocol: the model replies in Markdown and wraps shell work
in
<run>blocks. Lenos executes those blocks and feeds the real result back into the next turn. - CLI-native tools: code editing, web lookup, skill discovery, project lookup, and goal management are regular shell commands, not hidden adapter APIs.
- High cache locality: runtime context is injected as stable command/result history instead of large changing prose blocks.
- Agent journal: task sessions maintain a journal the agent can read after compaction, preserving continuity without dragging full history forward.
- Background jobs: long-running shell commands can keep running while the session stays responsive, with job results fed back into the agent.
- Session storage: SQLite-backed sessions can be resumed, continued, compacted, and reviewed.
- Multi-provider models: Anthropic, OpenAI, Gemini, Bedrock, Copilot, Hyper, MiniMax, Vercel, DeepSeek-compatible routes, and other configured providers.
- Agent skills: local
SKILL.mddirectories extend agent behavior without changing Lenos itself. - ttal-native workflow: built for worker sessions, PR flow, and the wider ttal toolchain.
# Start the TUI in the current project.
lenos
# Run one prompt non-interactively.
lenos run "Summarize the current branch"
# Pipe content into a run.
git diff --cached | lenos run "Review this staged diff"
# Continue the most recent session.
lenos --continue
# Use a model for this session only.
lenos -m deepseek-v4-pro
# Use the configured small-tier model.
lenos --small-model
# Select the small tier and override its model for this session only.
lenos --small-model -m claude-haiku-3.5
# Persist preferred models.
lenos config set-model large deepseek-v4-pro
lenos config set-model small claude-haiku-3.5CLI model flags are ephemeral. They do not write config.json and do not leak
into future sessions. Use lenos config set-model when you want persistence.
Lenos reads configuration from these locations, highest priority first:
.lenos/config.json$XDG_DATA_HOME/lenos/config.jsonor~/.local/share/lenos/config.json$XDG_CONFIG_HOME/lenos/config.jsonor~/.config/lenos/config.json
See schema.json for all options and docs/hooks.md for lifecycle hooks.
Common environment variables:
| Variable | Description |
|---|---|
LENOS_GLOBAL_CONFIG |
Override global config directory |
LENOS_GLOBAL_DATA |
Override global data directory |
LENOS_CACHE_DIR |
Override cache directory |
LENOS_SKILLS_DIR |
Override skills directory |
LENOS_DISABLE_PROVIDER_AUTO_UPDATE |
Disable automatic provider updates |
LENOS_DISABLE_DEFAULT_PROVIDERS |
Ignore embedded default providers |
LENOS_DISABLE_METRICS |
Disable telemetry |
LENOS_PROFILE |
Enable pprof profiling |
Agent skills live in either global or project-local directories:
~/.config/lenos/skills/.lenos/skills/
Each skill is a directory with a SKILL.md file. The installer provides the
skill CLI for finding and managing skill content.
Lenos links the Temenos sandbox SDK directly. The installer writes a starter
Temenos config at ~/.config/temenos/config.toml and a starter Lenos config at
~/.lenos/config.json when those files do not already exist.
The old --yolo and permissions.allowed_tools paths are gone. Execution
policy now belongs to the sandbox configuration and the runtime's tool rules.
make build
make test
make fmt
make lint-fixSingle-package tests use normal Go commands:
go test ./internal/agent -run TestNameLenos is licensed under the Functional Source License, Version 1.1, MIT Future License.
Lenos is a fork of Crush by Charmbracelet, originally created by Kujtim Hoxha and the Charmbracelet team.
Major changes from upstream Crush include the github.com/tta-lab/lenos module
path, the lenos binary name, .lenos data directories, LENOS_*
environment variables, ttal runtime integration, sandboxed command execution,
runtime context templates, session compaction, and the release installer above.
The FSL-1.1-MIT license terms are preserved. Original Charmbracelet and Kujtim Hoxha copyrights are retained in LICENSE.md.