Skip to main content

Kollab

Python Version PyPI License: MIT

A terminal AI workspace for people who want their agents, tools, providers, plugins, and workflows to share one inspectable runtime.

Getting Started · Providers · Models · Agents · Web UI · Plugins · Hub

Kollab terminal demo showing koordinator coordinating with lapis and sapphire through the local agent hub

Kollab is a terminal-native AI workspace for developers who want more than a single chat box. It brings interactive chat, slash commands, provider profiles, model loadouts, tool permissions, MCP servers, plugins, pipe mode, a local browser UI, and collaborating agents into one CLI.

The point is not to hide the machinery. Kollab gives you a fast daily AI terminal, but it also exposes the runtime underneath it: every meaningful stage is hookable. User input, LLM requests, streamed responses, message display, tool calls, and post-tool results all move through an event pipeline that plugins can observe, transform, or block.

That lets Kollab do things that are still unusual in a terminal AI app: multiple agents can discover each other without a central server, exchange hub messages, carry task ledgers across context compaction, keep vault-backed memory, receive scheduled prompts, search and load tools on demand, preserve oversized tool results as inspectable artifacts, and advertise identity, trust, and capabilities through an experimental Agent DNS layer.

Kollab is still beta, and some of the ambitious pieces are being hardened. But the shape is already there: a local, inspectable AI workspace that can grow from one chat session into a small team of coordinated agents.

What Kollab Does

  • Chat with frontier, local, or OpenAI-compatible models from a fast terminal UI.
  • Switch providers and model profiles without leaving the session.
  • Browse the model registry and activate named loadouts for model, effort, sampling, and output-budget presets.
  • Use a ChatGPT subscription through OpenAI OAuth, or bring API keys for other providers.
  • Run one-shot prompts and shell pipelines with kollab -p.
  • Switch the session workspace at runtime so later file and terminal tools target a different project directory.
  • Connect MCP servers for filesystems, GitHub, databases, browsers, search, and custom tools.
  • Use built-in web-search and web-fetch tools with smart content extraction and bounded results.
  • Gate shell, file, and MCP tool use through risk-aware approvals.
  • Search and load native or MCP tools on demand instead of injecting every schema into every request.
  • Launch specialized agents from bundled, global, or project-local definitions.
  • Coordinate multiple terminal agents through the hub: status, messages, task ledgers, vault memory, attach mode, and recurring prompts.
  • Keep long-running tasks alive across compaction with checkpoints, QA review, and reminder snoozes.
  • Resolve agents by identity, capability, and trust with the experimental Agent DNS layer.
  • Start the local engine and assistant-ui browser client together with kollab --web-ui.
  • Extend the runtime with Python plugins, slash commands, widgets, XML tool tags, and JSON config hooks.
  • Save, resume, inspect, and compact conversations as work evolves.

Why People Notice It

Kollab feels familiar at first: open a terminal, ask for help, use tools, keep working. The difference shows up once the work gets bigger than one prompt.

You can start a coding agent in one terminal, a reviewer in another, and a coordinator in a third. They join a project-scoped mesh automatically through presence files and Unix sockets. You can message them from the TUI or from the shell, attach to their output, assign durable tasks, schedule recurring check-ins, and inspect the memory they carry forward.

The result is a local agent workspace instead of a black-box automation. You can see who is online, what they were asked to do, what they produced, which tools were approved, and which hooks or plugins changed the flow.

Feature Tour

Area What you get
Terminal chat Streaming responses, command menu, status layout, themes, widgets, conversation history, and resume
Providers and profiles Anthropic, OpenAI, Google Gemini, Azure OpenAI, OpenRouter, Ollama, LM Studio, and custom OpenAI-compatible endpoints
OpenAI OAuth kollab --login openai for ChatGPT subscription-backed usage without an API key
Model registry and loadouts Catalog metadata, context windows, pricing, provider-aware sampling, reasoning effort, and named /llm presets
Pipe mode git diff | kollab "review this" -p --timeout 5min for scripts, CI, shell workflows, and automation
Tool permissions Approval modes, risk assessment, session/project approvals, blocked tools, trusted tools, and safe wildcard matching
Tools and MCP Native/XML tool parity, workspace-set, web-search/web-fetch, on-demand tool-search/tool-load, project/global MCP configs, and approval-aware external calls
Context protection Aggregate tool-output budgets with lossless .output artifacts and bounded previews when context gets large
Agent system Bundled agents (bundles/agents/), optional local/global agents, Agent Skills modules (bundles/skills/ + .kollab/skills/ + ~/.kollab/skills/), and dynamic prompts
Agent hub Peer discovery, identity/bundle mapping, hub messages, broadcasts, task ledger, checkpoint/snooze/QA flows, output capture, vault memory, cron messages, Telegram bridge, and org launch files
Agent DNS Experimental identity, trust, capability lookup, Ed25519 keys, AID-style TXT export, ARDP-style registration payloads, and DNS roster commands
Plugin system Event hooks, custom commands, startup info, config widgets, XML tags, context injection, and clean shutdown
Engine, web UI, and attach mode Local FastAPI engine, assistant-ui browser client, bearer-token wiring, RPC state services, multi-context daemons, and attach workflows

Agent Hub

The hub is Kollab's agent collaboration layer. Agents launched in the same project can discover each other automatically, communicate over local sockets, and coordinate through a shared command surface.

Keep these three names separate:

  • identity — the stable hub name or mailbox, such as lapis. It is what /hub status, /hub msg, and /hub capture address.
  • bundle — the behavior package, such as coder or research: system prompt, prompt sections, allowed tools, and declared skills.
  • provider profile/loadout — the model connection and tuning. A profile owns credentials; a loadout combines a profile with a model and parameters such as effort or output budget.

This launch runs the coder bundle under the lapis identity with the openai-oauth provider profile:

kollab --agent coder --as lapis --llm openai-oauth
kollab --agent coder --as lapis
kollab --agent technical-writer --as sapphire
kollab --hub status
kollab --hub msg lapis "review the latest diff"
kollab --hub capture lapis 100

Hub features include:

  • Zero-config peer discovery for local agents in the same project.
  • Optional fixed identities with --as (for example, --as lapis) when you want stable names instead of auto-assigned identities.
  • Direct messages, broadcasts, live output capture, and interactive attach mode.
  • Durable task ledgers with active -> done -> QA review -> closed workflows, including the task_snooze reminder control.
  • Vault-backed memory with raw streams, rolling working memory, and crystallized long-term notes.
  • Recurring hub messages through /hub cron.
  • Optional Telegram forwarding for remote check-ins.
  • Organization launch files for starting multi-agent teams.

An offline inbox is durable mail waiting for a known identity; it is not a live process. capture only works for an online peer or active orchestrator session, so agent 'lapis' not found means there is no capturable live runtime under that name. A direct message can still be queued for the identity and delivered when it reconnects.

research is normally a bundle name, not a hub identity. Capture the identity shown by /hub status instead.

Agent DNS

Agent DNS is experimental, but it is one of the more forward-looking pieces of Kollab. It adds a discovery, identity, and trust layer on top of the hub so agents can be addressed by more than a process name.

The local DNS registry stores agent records with an ARDP-style identity such as agent:lapis@kollabor.ai, socket or endpoint bindings, capabilities, public keys, approval state, trust score, and runtime state. Public domain discovery uses a separate signed descriptor cache with persistent origin/key pins. Discovering a domain does not import its keys into the messaging registry or authorize tools.

/hub dns resolve
/hub dns resolve lapis
/hub dns find review
/hub dns trust lapis
/hub dns leaderboard
/hub dns endorse lapis review
/hub dns keys lapis
/hub dns endpoint
/hub dns connect example.com

Today this is best understood as an emerging trust and routing layer for local agent meshes: resolve who is online, find agents by capability, inspect key material, and track reputation through task outcomes and endorsements.

An optional off-box endpoint (plugins.hub.endpoint_enabled) binds a TCP/TLS listener that shares the same Ed25519 handshake, so a remote agent on another machine can authenticate and deliver messages over the network. It is disabled by default, always requires the handshake, and refuses to bind a plaintext port without an explicit opt-in. This historical direct stream transport is separate from the WSS relay and the standard A2A workspace receiver. See the direct endpoint reference.

Connect workspaces through a beacon

In the current source, /connect <domain> verifies signed discovery and pins the publisher key, then opens an outbound WSS connection only when the document advertises a compatible relay. /hub dns connect <domain> is an alias. An identity-only publisher remains a discovery contact without a relay connection.

/connect <beacon-domain>
/connect invite
# Privately copy the generated invitation file to the second computer.
/connect join /absolute/path/to/invitation.txt
/connect peers
/connect approve <peer-public-key>
/connect ping <peer-public-key>
/connect disconnect

Joining pins the inviter; the inviter approves the joining peer's key locally. Invitation rooms expose peer-key presence to their members. Approved peers can exchange encrypted ping/presence responses; this does not start an LLM turn or grant workspace access. /connect in attach mode operates on the daemon's identity and connection. Self-host the service with kollab relay run --config /private/relay.json.

See the public beacon contract for setup, limits and key handling, and the implementation ledger for verification and deployment status. Workspace task authorization is a separate A2A receiver flow.

Browser UI and Local Engine

The optional browser surface uses the same provider, tool, permission, MCP, and hub runtime as the terminal app. From a source checkout or installed workspace:

kollab --web-ui
# browser: http://127.0.0.1:8080
# engine:  http://127.0.0.1:7433

The flag starts the local engine when needed, launches kollabor-webui, reuses a healthy engine on port 7433, and cleans up child processes on exit. For separate development loops, see the engine README and web UI README.

Why It Exists

Most AI CLIs are either chat windows or opaque automations. Kollab aims for the middle ground: a terminal workspace you can actually steer, inspect, and rewire. It is useful as a day-to-day coding chat, but the interesting part is the runtime beneath it: hooks, plugins, agents, permissions, MCP, and durable conversation state all share the same pipeline.

user input -> pre_user_input -> pre_api_request -> [LLM API]
           -> post_api_response -> pre_message_display -> output
                                    |
                                    -> pre_tool_use -> tool execution -> post_tool_use

That pipeline is how the hub, permissions, context compaction, MCP, terminal sessions, save/resume workflows, and plugin-provided tools layer onto the same core app.

Status

Kollab is beta software. The CLI, provider integrations, plugin APIs, and agent workflows are usable today, but some advanced runtime, engine, and integration paths are still being hardened. See CHANGELOG.md and docs/release-process.md for release notes and release gates.

Install

Recommended installer:

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

Python package managers:

pipx install kollab

pipx is the recommended installer: it puts kollab in its own isolated virtualenv, which sidesteps a class of startup failure where obsolete stdlib-backport packages (typing, asyncio, dataclasses, pathlib, ...) left in a shared interpreter shadow the standard library and crash kollab on launch. uv tool install kollab isolates the same way.

pip install kollab also works, but installs into the active interpreter and so inherits whatever is already there:

pip install kollab

On an externally managed system Python (including Arch), use an isolated environment. If pipx and uv are unavailable, Python itself is sufficient:

python3 -m venv ~/.local/share/kollab/venv
~/.local/share/kollab/venv/bin/python -m pip install --upgrade kollab
~/.local/share/kollab/venv/bin/kollab --login openai

This uses the published package without changing system Python. To run kollab by name in the current shell, activate the environment with source ~/.local/share/kollab/venv/bin/activate. For OpenAI account login, use --login openai at launch or /login openai inside the app.

Homebrew packaging is prepared separately after a release wheel is published and the formula SHA is available. Maintainer notes live in homebrew-tap/README.md.

Quick Start

New here? Launch Kollab and run /setup — a guided wizard walks you through picking a provider, entering your API key, choosing a model, optionally testing the connection, and saving it as your active profile. No env vars or JSON required. (ChatGPT sign-in delegates to /login; Azure/advanced is configured in config.json — see docs/providers.md.)

Prefer environment variables? Kollab also auto-detects common provider vars:

Environment Variable Provider Notes
ANTHROPIC_API_KEY / ANTHROPIC_AUTH_TOKEN Anthropic Claude models and Anthropic-compatible gateways
OPENAI_API_KEY OpenAI GPT models
GEMINI_API_KEY Google Gemini models
OPENROUTER_API_KEY OpenRouter Gateway to many providers
AZURE_OPENAI_API_KEY Azure OpenAI Requires Azure endpoint and model settings
export OPENAI_API_KEY="<your-openai-api-key>"
kollab

By default, Kollab starts with the koordinator agent and joins the local hub mesh, so a plain kollab session is ready for multi-agent coordination.

Provider-specific model env vars are also supported for auto-detected profiles:

export OPENROUTER_API_KEY="<your-openrouter-api-key>"
export OPENROUTER_MODEL="deepseek/deepseek-v3.2"
kollab

Anthropic-compatible gateways can use the Claude Code-style env names:

export ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
export ANTHROPIC_AUTH_TOKEN="<your-token>"
export ANTHROPIC_DEFAULT_OPUS_MODEL="glm-4.7"
kollab

Use /llm inside Kollab to switch models and presets. For more configuration options, see docs/configuration.md, docs/providers.md, and docs/reference/env-vars.md.

You can also define profiles directly from environment variables:

# Pattern: KOLLAB_{PROFILE}_{FIELD}
export KOLLAB_WORK_MODEL=claude-sonnet-5
export KOLLAB_WORK_PROVIDER=anthropic
export KOLLAB_WORK_API_KEY="<your-anthropic-api-key>"
export KOLLAB_WORK_BASE_URL="https://api.anthropic.com"
# Optional tuning fields (TEMPERATURE/TOP_P are ignored on models that
# reject sampling params -- see bundles/data/models.json supports_sampling)
export KOLLAB_WORK_MAX_TOKENS=4096
export KOLLAB_WORK_TEMPERATURE=0.3
export KOLLAB_WORK_TIMEOUT=30
export KOLLAB_WORK_TOP_P=0.95
export KOLLAB_WORK_EFFORT=high
export KOLLAB_WORK_STREAMING=true
export KOLLAB_WORK_SUPPORTS_TOOLS=true
export KOLLAB_WORK_DESCRIPTION="Claude profile for work tasks"
# EXTRA_HEADERS must be valid JSON
export KOLLAB_WORK_EXTRA_HEADERS='{"x-trace-id":"work-session"}'
kollab --llm work
# Persist this env-defined profile to config
kollab --llm work --save
# Persist and set as startup default profile
kollab --llm work --default
# Persist to project-local config instead of global
kollab --llm work --save --local
# Set project-local default profile
kollab --llm work --default --local

Common profile fields: MODEL, PROVIDER, API_KEY, BASE_URL, MAX_TOKENS, TEMPERATURE, TIMEOUT (seconds), TOP_P, EFFORT, STREAMING, SUPPORTS_TOOLS, DESCRIPTION, EXTRA_HEADERS (JSON string).

Resolution order is: KOLLAB_{PROFILE}_{FIELD} -> KOLLAB_{FIELD} -> config -> defaults. KOLLAB_{PROFILE}_MODEL is required to create a profile from env vars.

Common Workflows

Use ChatGPT OAuth

kollab --login openai

Kollab opens a browser for authorization, stores the token in local user runtime state, and uses the Responses API with the subscription quota.

Run Pipe Mode

kollab "What is the capital of France?"
echo "Explain this code" | kollab -p
cat document.txt | kollab "summarize this" -p
git diff | kollab "write a concise commit message" -p --timeout 30s

Launch Agents

kollab --agent coder --as lapis
kollab --agent technical-writer --as sapphire --skill readme-writing

Agents can be bundled with the project, installed globally, or defined inside a workspace under .kollab/agents/. --agent selects the bundle; --as selects the hub identity. See docs/features/agents.md.

Coordinate Agents With The Hub

kollab --agent coder --as lapis
kollab --hub status
kollab --hub msg lapis "review the latest diff"
kollab --hub capture lapis 100
kollab --hub org engineering "ship the billing flow"
kollab --org engineering
kollab --hub stop lapis

Hub capabilities include identities, project-scoped memory, task ledger workflows, recurring hub messages, optional Telegram forwarding, organization launch files, and experimental DNS-style identity and trust commands. Start with docs/guides/hub-quick-start.md.

Manage Tools And MCP

/permissions
/mcp                 open the MCP manager
/mcp setup           open the MCP manager
/mcp show            show MCP server status
/mcp status          show MCP server status (compatibility alias)
/mcp list            show MCP server status (alias)
/mcp servers         show MCP server status (alias)
/mcp tools [server]  list available MCP tools
/mcp test <server>   test one server connection
/mcp enable <server> enable a server in config
/mcp disable <server> disable a server in config
/mcp reload          reload config and reconnect enabled servers; report failures
aliases: /mcps, /servers

Inside /mcp, press g to toggle the global MCP subsystem. Use Space to toggle the selected server, a/d to add or delete a configured server, t to test, r to reload, / to filter, and Esc to exit.

See docs/reference/commands.md for the complete slash-command reference and docs/features/mcp.md for configuration details.

MCP tools run through the same approval system as native tools. See docs/features/permissions.md and docs/features/mcp.md.

The built-in tool-search and tool-load tools let an agent discover a tool by keyword and load its full schema only when needed. Large tool results remain available as managed .output artifacts while the model receives a bounded preview; see tool-output artifacts.

Extend Kollab

Plugins can register hooks, slash commands, startup info, config widgets, and tool handlers:

from kollabor_plugins import BasePlugin

class MyPlugin(BasePlugin):
    async def register_hooks(self):
        self.event_bus.register_hook("pre_api_request", self.inject_context)

Plugin entry points live under plugins/, and the plugin SDK lives in packages/kollabor-plugins. See docs/plugins/overview.md, docs/plugins/development.md, and docs/plugins/hooks-reference.md.

Slash Commands

Command Description
/llm Switch model loadouts — provider + model + param presets
/model Quick model selection and reasoning effort (/model effort max)
/agent Switch agent definitions when available
/skill Load or unload agent skills when available
/setup Guided provider/profile setup
/save Save conversation output
/hub Manage the agent hub
/hub dns Resolve agents, inspect trust, find capabilities, and show Agent DNS keys
/connect Verify domain discovery, join an advertised beacon, and approve encrypted peer presence
/terminal Manage terminal sessions
/permissions Configure tool approval modes
/login Run provider login flows
/mcp Open the MCP manager
/resume Resume a previous conversation
/config Open the settings editor
/updates Browse recent release notes in the terminal
/help Show available commands

Type / in the app to see the full command menu. Plugins can add more commands.

Common CLI-only or plugin surfaces:

kollab --help
kollab --doctor                 # first-run readiness check
kollab --updates                # recent changes
kollab --sub list               # agent orchestrator sessions
kollab --attach lapis           # interactively attach to a live identity
kollab --hub status             # hub inspection without a TUI
kollab --web-ui                 # local engine + browser UI

Repository Layout

Kollab is a Python monorepo. The root package provides the kollab command and the kollabor/ orchestration layer; reusable runtime pieces live in workspace packages.

Package Role
kollabor CLI startup, application orchestration, commands, LLM coordination
packages/kollabor-ai Providers, profiles, OAuth, prompt rendering, conversation state
packages/kollabor-agent Tool execution, MCP, permissions, file/shell operations, agents
packages/kollabor-tui Terminal rendering, input, widgets, fullscreen views, status UI
packages/kollabor-events Event bus, hook registry, executor, processor, event models
packages/kollabor-config Configuration loading and utilities
packages/kollabor-plugins Plugin framework and SDK
packages/kollabor-rpc RPC protocol and client helpers
packages/kollabor-engine Local engine/backend service
packages/kollabor-webui Web UI package
plugins Concrete built-in plugin implementations
bundles Bundled agents, skills, themes, layouts, and widgets

Development

git clone https://github.com/kollaborai/kollab.git
cd kollab
uv sync --all-packages --extra dev
uv run python main.py

Focused validation used by the current CI baseline:

uv run python -m pytest \
  tests/unit/test_openai_streaming_finish_reason.py \
  tests/unit/test_turn_runner_tool_loop.py \
  tests/unit/test_hub_project_scope.py \
  tests/unit/test_provider_models.py \
  tests/unit/test_provider_security.py \
  tests/unit/test_gemini_provider.py
uv run python -m ruff check --select E9,F63,F7,F82 kollabor packages plugins tests
uv run python -m py_compile kollabor/cli.py kollabor_cli_main.py plugins/hub/plugin.py

For contribution guidance, see CONTRIBUTING.md. For agent and architecture guidance, see AGENTS.md, CLAUDE.md, and docs/architecture/README.md.

Documentation

Support and Security

Do not post API keys, OAuth tokens, private conversation logs, raw transcripts, or local runtime data in public issues.

License

Kollab is licensed under the MIT License.

Metadata

Release files for kollab 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kollab 0.10.0
File Size Uploaded
kollab-0.10.0.tar.gz 3.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for kollab 0.10.0
File Interpreter ABI Platform
kollab-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 6.6 MB

Release files / kollab-0.10.0.tar.gz

Download URL kollab-0.10.0.tar.gz
Size 3.5 MB
Tags Source
SHA-256 checksum
How to use checksums
f9d094f82464324241a4edc51670b4dbba05f251cfbb227ee031327280c7d3a8
BLAKE2b-256 checksum
How to use checksums
9788dd889f424813118f433dcd8f17f858a90e279ad044deda11a54e95c6d36a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / kollab-0.10.0-py3-none-any.whl

Download URL kollab-0.10.0-py3-none-any.whl
Size 3.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
8372617cc0af4a0b20cbdc73ee20fcb41d41be185639ecfcd69cfa1b24db44b8
BLAKE2b-256 checksum
How to use checksums
ffa798adca422ccee13ad38b39d3c5852541b03907f6eebfcc1ac3787bca8d72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

1.0.1

2 release files

1.0.0

2 release files

0.15.6

2 release files

0.15.5

2 release files

0.15.4

2 release files

0.15.3

2 release files

0.15.2

2 release files

0.15.1

2 release files

0.15.0

2 release files

0.10.7

2 release files

0.10.6

2 release files

0.10.5

2 release files

0.10.4

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.24

2 release files

0.5.23

2 release files

0.5.22

2 release files

0.5.19

2 release files

0.5.18

2 release files

0.5.16

2 release files

0.5.15

2 release files

0.5.14

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.11

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page