Universal AI in your terminal.
Project description
clob
Universal AI in your terminal.
clob is an open-source universal AI terminal platform with a modern TUI. Connect any AI provider, stream responses, manage sessions, and build AI workflows — all from your terminal.
+----------------------------------------------------------+
| clob Sat May 17 12:00:00 |
+---------------------------+------------------------------+
| clob v0.2 | openrouter › gpt-4o-mini |
| | 👁 vision 🔧 tools |
| 💬 Fix the auth bug +------------------------------+
| 💬 Write unit tests | ▶ You |
| 💬 Docker setup help | @file main.py explain this |
| 💬 Explain async/await | |
| | ◆ AI |
| | The `main.py` file defines |
| | your Typer CLI entry point. |
| | Here's a breakdown... |
| [ + New Chat ] | |
+---------------------------+------------------------------+
| Type a message… @file, @dir, @workspace, Ctrl+P |
+----------------------------------------------------------+
| clob v0.2 │ openrouter › gpt-4o-mini │ ● ready |
+----------------------------------------------------------+
Features
- Modern TUI — Textual-powered UI with sidebar, streaming chat, command palette (
Ctrl+P) - Universal Providers — OpenRouter, Groq, NVIDIA Build, Ollama, any OpenAI-compatible API
- Workspace Context —
@file main.py,@dir src/,@workspaceinject context into prompts - Real-time Streaming — Markdown rendering with code-fence awareness, reduced flicker
- Analytics — Token counts and estimated cost tracked live per session
- Persistent Memory — SQLite-backed sessions, messages, full-text search
- Themes — dark, light, cyberpunk, nord + custom user themes
- Sandbox Execution — Safe shell with
SAFE/RESTRICTED/FULLpermission levels - Plugin System — Extend with custom providers, themes, tools, and agents
- Cross-platform — Linux, macOS, Windows
Installation
pip (all platforms)
pip install clob
Homebrew (macOS / Linux)
brew tap crishacks/tap
brew install clob
Scoop (Windows)
scoop bucket add crishacks https://github.com/crishacks/scoop-clob
scoop install crishacks/clob
Chocolatey (Windows)
choco install clob
Docker
docker run -it --rm \
-e OPENROUTER_API_KEY=$OPENROUTER_API_KEY \
ghcr.io/crishacks/clob:latest
From source
git clone https://github.com/crishacks/clob
cd clob
pip install -e .
Quick Start
# Set API key
export OPENROUTER_API_KEY="sk-or-..."
# Launch TUI
clob
# Single message
clob chat "Explain async/await in Python"
# Use Groq (fast inference)
clob chat "Hello" --provider groq --model llama3-8b-8192
# Check setup
clob doctor
Provider Setup
Set API keys as environment variables:
export OPENROUTER_API_KEY="sk-or-..."
export GROQ_API_KEY="gsk_..."
export NVIDIA_API_KEY="nvapi-..."
Or configure ~/.config/clob/config.toml:
[default]
provider = "openrouter"
model = "openai/gpt-4o-mini"
[providers.openrouter]
base_url = "https://openrouter.ai/api/v1"
api_key = "env:OPENROUTER_API_KEY"
[providers.groq]
base_url = "https://api.groq.com/openai/v1"
api_key = "env:GROQ_API_KEY"
# Named profiles
[profiles.work]
provider = "openrouter"
model = "anthropic/claude-sonnet-4"
[profiles.local]
provider = "ollama"
model = "llama3"
Custom OpenAI-Compatible Provider
[providers.my-provider]
base_url = "https://api.example.com/v1"
api_key = "env:MY_API_KEY"
chat_endpoint = "/chat/completions"
Workspace Context
Inject files and directories directly into your prompts:
@file main.py explain this code
@dir src/ what does this module do?
@workspace give me an overview of this project
TUI Keyboard Shortcuts
| Key | Action |
|---|---|
Ctrl+P |
Command palette |
Ctrl+N |
New chat session |
Ctrl+S |
Settings |
Ctrl+U |
Usage / token analytics |
Ctrl+F |
Search memory |
Ctrl+B |
Toggle sidebar |
Ctrl+L |
Clear chat |
Ctrl+Q |
Quit |
Enter |
Send message |
Escape |
Focus input |
CLI Commands
clob # Launch TUI
clob chat "message" # Send a message
clob chat "msg" -p groq # Use specific provider
clob models # List available models
clob providers # List configured providers
clob config --show # Show config
clob config --edit # Edit in $EDITOR
clob memory --sessions # List sessions
clob memory --search query # Search history
clob session --export 5 # Export session #5 as markdown
clob session --export 5 -f json # Export as JSON
clob ollama list # List local Ollama models
clob ollama pull llama3 # Pull a model
clob workspace stats # Show workspace file stats
clob workspace index # Index current workspace
clob theme list # List themes
clob theme set cyberpunk # Set theme
clob plugins list # List plugins
clob plugins install <pkg> # Install a plugin
clob usage # Show usage report
clob doctor # Diagnose installation
Themes
clob theme list
# dark, light, cyberpunk, nord
clob theme set nord
Place custom .tcss files in ~/.config/clob/themes/ to create your own themes.
Ollama (Local Models)
# Start Ollama
ollama serve
# List local models
clob ollama list
# Pull a model
clob ollama pull llama3
# Use in TUI — select "ollama" as provider
Docker
# Basic
docker run -it --rm \
-e OPENROUTER_API_KEY=$OPENROUTER_API_KEY \
ghcr.io/crishacks/clob:latest
# With Ollama
docker-compose --profile ollama up
Plugin Development
Create ~/.config/clob/plugins/my-plugin/plugin.py:
from clob.plugins import Plugin
class ClobPlugin(Plugin):
name = "my-plugin"
version = "1.0.0"
description = "My custom clob plugin"
def on_load(self, app) -> None:
print("Plugin loaded!")
Development
git clone https://github.com/crishacks/clob
cd clob
pip install -e ".[dev]"
pytest tests/ -v # Run tests (36 tests)
ruff check clob/ # Lint
black clob/ # Format
clob doctor # Check setup
See CONTRIBUTING.md for full contributor guide.
Documentation
| Doc | Description |
|---|---|
| CONTRIBUTING.md | Contributor guide |
| SECURITY.md | Security policy and reporting |
| CODE_OF_CONDUCT.md | Community standards |
| CHANGELOG.md | Version history |
| AGENTS.md | Agent architecture |
| CLAUDE.md | AI assistant context file |
Roadmap
- Anthropic Claude native provider
- MCP (Model Context Protocol) support
- Multi-agent workflows
- Image generation in TUI
- Voice input
- Theme marketplace
- VS Code extension
Contributing
PRs welcome! See CONTRIBUTING.md.
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clob-0.2.0b0.tar.gz.
File metadata
- Download URL: clob-0.2.0b0.tar.gz
- Upload date:
- Size: 52.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c7a7b17d9f8f01c3cc8c1129bf41f315c2b667d253c96d6fedd8e8677602bc9
|
|
| MD5 |
3f7ad70ff165c732ce5278eef0b2d7f0
|
|
| BLAKE2b-256 |
ba5ee55b34ca35e7116773c06919570cd927ffd0a03e066cf716764ab7c02ecc
|
Provenance
The following attestation bundles were made for clob-0.2.0b0.tar.gz:
Publisher:
release.yml on crishacks/clob
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clob-0.2.0b0.tar.gz -
Subject digest:
6c7a7b17d9f8f01c3cc8c1129bf41f315c2b667d253c96d6fedd8e8677602bc9 - Sigstore transparency entry: 1566826703
- Sigstore integration time:
-
Permalink:
crishacks/clob@9d6842c265c122524077d0f596d2e2af3902b908 -
Branch / Tag:
refs/tags/v0.2.0-beta - Owner: https://github.com/crishacks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9d6842c265c122524077d0f596d2e2af3902b908 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clob-0.2.0b0-py3-none-any.whl.
File metadata
- Download URL: clob-0.2.0b0-py3-none-any.whl
- Upload date:
- Size: 53.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc64b134a9365a6262afd4e068fe75e647475781dd6167dca902eedad4670487
|
|
| MD5 |
926bf67b0e6dd795c95f7afc36da6c9f
|
|
| BLAKE2b-256 |
558b591e323263f5843304a89dbb5d714304134b186725eb28449e4fa3f9bb83
|
Provenance
The following attestation bundles were made for clob-0.2.0b0-py3-none-any.whl:
Publisher:
release.yml on crishacks/clob
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clob-0.2.0b0-py3-none-any.whl -
Subject digest:
dc64b134a9365a6262afd4e068fe75e647475781dd6167dca902eedad4670487 - Sigstore transparency entry: 1566826715
- Sigstore integration time:
-
Permalink:
crishacks/clob@9d6842c265c122524077d0f596d2e2af3902b908 -
Branch / Tag:
refs/tags/v0.2.0-beta - Owner: https://github.com/crishacks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9d6842c265c122524077d0f596d2e2af3902b908 -
Trigger Event:
push
-
Statement type: