Skip to main content

Universal AI in your terminal.

Project description

clob

Universal AI in your terminal.

License: MIT Python 3.12+ PyPI CI

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/, @workspace inject 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/FULL permission 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clob-0.2.0b0.tar.gz (52.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clob-0.2.0b0-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

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

Hashes for clob-0.2.0b0.tar.gz
Algorithm Hash digest
SHA256 6c7a7b17d9f8f01c3cc8c1129bf41f315c2b667d253c96d6fedd8e8677602bc9
MD5 3f7ad70ff165c732ce5278eef0b2d7f0
BLAKE2b-256 ba5ee55b34ca35e7116773c06919570cd927ffd0a03e066cf716764ab7c02ecc

See more details on using hashes here.

Provenance

The following attestation bundles were made for clob-0.2.0b0.tar.gz:

Publisher: release.yml on crishacks/clob

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for clob-0.2.0b0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc64b134a9365a6262afd4e068fe75e647475781dd6167dca902eedad4670487
MD5 926bf67b0e6dd795c95f7afc36da6c9f
BLAKE2b-256 558b591e323263f5843304a89dbb5d714304134b186725eb28449e4fa3f9bb83

See more details on using hashes here.

Provenance

The following attestation bundles were made for clob-0.2.0b0-py3-none-any.whl:

Publisher: release.yml on crishacks/clob

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page