Skip to main content

An advanced, highly customizable terminal-based chat application for interacting with LLMs

Project description

Kollabor

Python Version License: MIT

An advanced, highly customizable terminal-based chat application for interacting with Large Language Models (LLMs). Built with a powerful plugin system and comprehensive hook architecture for complete customization.

macOS: brew install kollaborai/tap/kollabor Other: curl -sS https://raw.githubusercontent.com/kollaborai/kollabor-cli/main/install.sh | bash Run: kollab

Features

  • Event-Driven Architecture: Everything has hooks - every action triggers customizable hooks that plugins can attach to
  • Advanced Plugin System: Dynamic plugin discovery and loading with comprehensive SDK
  • Rich Terminal UI: Beautiful terminal rendering with status areas, visual effects, and modal overlays
  • Conversation Management: Persistent conversation history with full logging support
  • Model Context Protocol (MCP): Built-in support for MCP integration
  • Tool Execution: Function calling and tool execution capabilities
  • Pipe Mode: Non-interactive mode for scripting and automation
  • Environment Variable Support: Complete configuration via environment variables (API settings, system prompts, etc.)
  • Extensible Configuration: Flexible configuration system with plugin integration
  • Async/Await Throughout: Modern Python async patterns for responsive performance

Installation

macOS (Recommended)

Standard Homebrew installation - what most macOS users expect:

brew install kollaborai/tap/kollabor

To upgrade:

brew upgrade kollabor

One-Line Install (Cross-Platform)

Auto-detects the best method (uvx > pipx > pip):

curl -sS https://raw.githubusercontent.com/kollaborai/kollabor-cli/main/install.sh | bash

Using uvx (Fastest, Isolated)

uvx runs the app in an isolated environment without installation:

uvx --from kollabor kollab

Or install to uv tool cache for instant startup:

uv tool install kollabor
kollab

Using pipx (Isolated, Clean)

Recommended for user-space installation without system conflicts:

pipx install kollabor

Using pip

Standard Python package installation:

pip install kollabor

From Source

git clone https://github.com/kollaborai/kollabor-cli.git
cd kollabor-cli
pip install -e .

Development Installation

pip install -e ".[dev]"

Quick Start

Interactive Mode

Simply run the CLI to start an interactive chat session:

kollab

Pipe Mode

Process a single query and exit:

# Direct query
kollab "What is the capital of France?"

# From stdin
echo "Explain quantum computing" | kollab -p

# From file
cat document.txt | kollab -p

# With custom timeout
kollab --timeout 5min "Complex analysis task"

Configuration

On first run, Kollabor creates a .kollabor-cli directory in your current working directory:

.kollabor-cli/
├── config.json           # User configuration
├── system_prompt/        # System prompt templates
├── logs/                 # Application logs
└── state.db              # Persistent state

Configuration Options

The configuration system uses dot notation:

  • core.llm.* - LLM service settings
  • terminal.* - Terminal rendering options
  • application.* - Application metadata

Environment Variables

All configuration can be controlled via environment variables, which take precedence over config files:

API Configuration

KOLLABOR_API_ENDPOINT=https://api.example.com/v1/chat/completions
KOLLABOR_API_TOKEN=your-api-token-here        # or KOLLABOR_API_KEY
KOLLABOR_API_MODEL=gpt-4
KOLLABOR_API_MAX_TOKENS=4096
KOLLABOR_API_TEMPERATURE=0.7
KOLLABOR_API_TIMEOUT=30000

System Prompt Configuration

# Direct string (highest priority)
KOLLABOR_SYSTEM_PROMPT="You are a helpful coding assistant."

# Custom file path
KOLLABOR_SYSTEM_PROMPT_FILE="./my_custom_prompt.md"

Using .env Files

Create a .env file in your project root:

KOLLABOR_API_ENDPOINT=https://api.example.com/v1/chat/completions
KOLLABOR_API_TOKEN=your-token-here
KOLLABOR_API_MODEL=gpt-4
KOLLABOR_SYSTEM_PROMPT_FILE="./prompts/specialized.md"

Load and run:

export $(cat .env | xargs)
kollab

See ENV_VARS.md for complete documentation and examples.

Architecture

Kollabor follows a modular, event-driven architecture:

Core Components

  • Application Core (core/application.py): Main orchestrator
  • Event System (core/events/): Central event bus with hook system
  • LLM Services (core/llm/): API communication, conversation management, tool execution
  • I/O System (core/io/): Terminal rendering, input handling, visual effects
  • Plugin System (core/plugins/): Dynamic plugin discovery and loading
  • Configuration (core/config/): Flexible configuration management
  • Storage (core/storage/): State management and persistence

Plugin Development

Create custom plugins by inheriting from base plugin classes:

from core.plugins import BasePlugin
from core.events import EventType

class MyPlugin(BasePlugin):
    def register_hooks(self):
        """Register plugin hooks."""
        self.event_bus.register_hook(
            EventType.PRE_USER_INPUT,
            self.on_user_input,
            priority=HookPriority.NORMAL
        )

    async def on_user_input(self, context):
        """Process user input before it's sent to the LLM."""
        # Your custom logic here
        return context

    def get_status_line(self):
        """Provide status information for the status bar."""
        return "MyPlugin: Active"

Hook System

The comprehensive hook system allows plugins to intercept and modify behavior at every stage:

  • pre_user_input - Before processing user input
  • pre_api_request - Before API calls to LLM
  • post_api_response - After receiving LLM responses
  • pre_message_display - Before displaying messages
  • post_message_display - After displaying messages
  • And many more...

Project Structure

kollabor/
├── core/              # Core application modules
│   ├── application.py # Main orchestrator
│   ├── config/        # Configuration management
│   ├── events/        # Event bus and hooks
│   ├── io/            # Terminal I/O
│   ├── llm/           # LLM services
│   ├── plugins/       # Plugin system
│   └── storage/       # State management
├── plugins/           # Plugin implementations
├── docs/              # Documentation
├── tests/             # Test suite
└── main.py            # Application entry point

Development

Running Tests

# All tests
python tests/run_tests.py

# Specific test file
python -m unittest tests.test_llm_plugin

# Individual test case
python -m unittest tests.test_llm_plugin.TestLLMPlugin.test_thinking_tags_removal

Code Quality

# Format code
python -m black core/ plugins/ tests/ main.py

# Type checking
python -m mypy core/ plugins/

# Linting
python -m flake8 core/ plugins/ tests/ main.py --max-line-length=88

# Clean up cache files and build artifacts
python scripts/clean.py

Requirements

  • Python 3.12 or higher
  • aiohttp 3.8.0 or higher

License

MIT License - see LICENSE file for details

Contributing

Contributions are welcome! Please see the documentation for development guidelines.

Links

Acknowledgments

Built with modern Python async/await patterns and designed for extensibility and customization.

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

kollabor-0.4.15.tar.gz (4.6 MB view details)

Uploaded Source

Built Distribution

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

kollabor-0.4.15-py3-none-any.whl (3.9 MB view details)

Uploaded Python 3

File details

Details for the file kollabor-0.4.15.tar.gz.

File metadata

  • Download URL: kollabor-0.4.15.tar.gz
  • Upload date:
  • Size: 4.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kollabor-0.4.15.tar.gz
Algorithm Hash digest
SHA256 71bbf0ad7c0a1106e9c0b34224858246740b84f2a9ace4afbedb5bcb85b8be1e
MD5 b5002910df9c0835d51535ab4ac22e98
BLAKE2b-256 e351ab1cdb5cf0ace3bb459a304107a0e76017a31c8da0c675cff2b6f630321d

See more details on using hashes here.

File details

Details for the file kollabor-0.4.15-py3-none-any.whl.

File metadata

  • Download URL: kollabor-0.4.15-py3-none-any.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for kollabor-0.4.15-py3-none-any.whl
Algorithm Hash digest
SHA256 4196a9969e1e1b1d39b32567386ea700ba6629fa06b017298d2717c2042d2e1a
MD5 242147be7afe8a0435dbcab84ebee9f7
BLAKE2b-256 9cc3ac59bfa25d33e76d33e21a4efb9d6936a6076c4cff5839618fa893c71f55

See more details on using hashes here.

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