Skip to content

tta-lab/lenos

Repository files navigation

Lenos

A terminal-first AI assistant and interactive runtime for the ttal ecosystem.

Lenos is a bash-only interactive shell for ttal agents — multi-model, session-based, built on the Charm ecosystem. It runs directly in your terminal and gives AI agents the tools to read, write, and execute code in a sandboxed environment.

Features

  • Multi-model support — Anthropic, OpenAI, Gemini, AWS Bedrock, GitHub Copilot, Hyper, and more
  • Session-based conversations — persistent, resumable AI sessions per project
  • Agent skills — composable skill system for customizing agent behavior
  • Charm ecosystem — built on Charmbracelet's terminal UI libraries
  • ttal native — designed for the ttal agent runtime and temenos sandbox

Screenshots

Lenos coder running in ttal

Installation

go install github.com/tta-lab/lenos@latest

Or download a pre-built binary from the releases page.

Homebrew (via ttal tap)

brew install tta-lab/ttal/lenos

Usage

# Run interactively
lenos

# Run non-interactively
lenos run "Summarize the changes in this PR"

# Pipe content in
cat README.md | lenos run "Make this more concise"

# Continue the most recent session
lenos --continue

# Use a custom data directory
lenos --data-dir /path/to/custom/.lenos

# Run with an explicit model override (ephemeral, no config write)
lenos -m gpt-4o
lenos run -m claude-sonnet-4

# Use the small-tier model (flag alone selects tier — no value)
lenos --small-model
lenos run --small-model

# Combine: small tier with a specific model override
lenos --small-model -m haiku-3.5

# Persist a default model (writes to ~/.local/share/lenos/config.json)
lenos config set-model large gpt-4o
lenos config set-model small claude-haiku-3.5

Migration Notes (Breaking Changes)

  • --yolo flag removed: No replacement. All permission prompts now obey the temenos sandbox or the per-tool default. If --yolo behavior is desired, run lenos under temenos with --readonly disabled.
  • permissions.allowed_tools config field removed: The permissions block is no longer recognized in config.json. All tool permissions are now managed by the temenos sandbox.
  • lenos run --small-model haiku syntax broken: The --small-model flag was previously a String (taking a model ID). It is now a Bool — the flag alone selects the small tier. To use a specific small-tier model with an override, combine: lenos run --small-model -m haiku. Existing scripts must update.

Configuration

Lenos looks for a config.json file in the following locations (highest priority first):

  1. .lenos/config.json (workspace config — project-specific overrides)
  2. $XDG_DATA_HOME/lenos/config.json or ~/.local/share/lenos/config.json (global data)
  3. $XDG_CONFIG_HOME/lenos/config.json or ~/.config/lenos/config.json (global config)

See the JSON schema for all available options. See hooks documentation for post-step lifecycle hooks configuration.

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

Agent skills extend what Lenos can do. Place skills in:

  • ~/.config/lenos/skills/ (global)
  • .lenos/skills/ (project-local)

Each skill is a directory containing a SKILL.md file.

License

Lenos is licensed under the Functional Source License, Version 1.1, MIT Future License.

Lineage & Attribution

Lenos is a fork of Crush by Charmbracelet, originally created by Kujtim Hoxha and the Charmbracelet team.

The original Crush project provided the foundation for Lenos: the terminal UI, multi-model architecture, and agent skill system. We are grateful to the original authors for their work.

Changes from upstream Crush:

  • Module path: github.com/charmbracelet/crushgithub.com/tta-lab/lenos
  • Binary name: crushlenos
  • Data directory: .crush/.lenos/
  • Config files: crush.jsonconfig.json
  • Environment variables: CRUSH_*LENOS_*
  • Ignore file: .crushignore.lenosignore
  • Context files: crush.mdlenos.md
  • Distributed via ttal homebrew tap instead of Charmbracelet channels

The FSL-1.1-MIT license terms are preserved. Original Charmbracelet and Kujtim Hoxha copyrights are retained in LICENSE.md.

About

Minimal coding agent for the terminal. Shell as the only tool. Aged to essentials. λ

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors