Skip to main content

thwip

Universal Coding Agent Multiplexer

Discover supported local AI tools, connect configured model providers in one terminal interface, and switch providers while preserving completed text conversation history.


Features

  • Auto-Detection: Discovers installed AI coding agents (Claude Code, Antigravity, Gemini CLI, OpenAI/Codex, Aider, Copilot, Cursor, Windsurf, Cline, Ollama) and configured credentials.
  • Context Portability: Switch between Anthropic Claude, Google Gemini, OpenAI Codex, or local Ollama mid-project. Conversation history and working files transfer directly.
  • Dynamic UI: Terminal interface adapts its status bar, capabilities, and theme based on the active provider.
  • Capability Disclaimers: Highlights when an agent lacks specific capabilities such as file editing or code execution.
  • Rate Limit Failover: Detects HTTP 429 errors or quota exhaustion and prompts instant switching to ready fallback models.
  • Tool Layer: Shared file editing, code execution (Python, Node, Shell), and Git integration across connected models.
  • Session Persistence: Save and resume sessions across projects with /session save and /session load.
  • Terminal Ergonomics: Autocompletion (Tab), keyboard shortcuts (Ctrl+S, Ctrl+T, Ctrl+H), and streaming markdown rendering.

Quickstart

1. Installation

Install the published package:

pip install --upgrade thwip-cli

Or install the repository in editable mode for development:

git clone https://github.com/tanmayhutt/thwip-cli.git
cd thwip-cli
pip install -e .

2. Launching thwip

Start the interactive terminal in your current project directory:

thwip

Slash Commands and Shortcuts

Command Action
/switch [agent] [model] Switch active agent or model mid-conversation
/agents Show all detected coding agents, company status, and capabilities
/models [agent] List available models for current or target agent
/key [provider] Enter an API key securely without placing it in prompt history
/status Display current session, project, and token stats
/limits View token usage, quota, and spend metrics
/detect Re-scan system for newly installed coding agents
/session save [name] Save current chat session
/session load <name> Load a previously saved session
/session list List all saved sessions
/session clear Clear current conversation memory
/history View conversation history with model attribution badges
/cost Show estimated session and cumulative cost
/project [path] View or change project working directory
Ctrl + S Quick switch agent prompt

Short aliases are available for frequent commands: /a, /m, /s, /k, /g, and /t. | Ctrl + T | Show agent status | | Ctrl + H | View history | | /quit | Exit thwip |


Supported Companies and Agents

Company Agent Capabilities
Anthropic Claude API (Fable 5, Opus 5, Sonnet 5, Haiku 4.5) Chat, File Edit, Code Run, Terminal, Git
Google Gemini API (3.1 Pro Preview, 3.7 Flash, 3.5 Flash-Lite) Chat, File Edit, Code Run, Terminal, Git
OpenAI OpenAI API (GPT-5.6 Sol, Terra, Luna) Chat, File Edit, Code Run, Terminal, Git
DeepSeek DeepSeek V3 / R1 Reasoner Chat, File Edit, Code Run, Reasoning
Groq Llama 3.3 70B, Mixtral Chat, File Edit, Code Run
Ollama Local Models (Llama 3.3, Qwen Coder, DeepSeek R1) Chat, File Edit, Code Run (Local, Offline)
OpenRouter Multi-Company Models Gateway Routing

Configuration (~/.thwip/config.toml)

thwip auto-detects existing API keys from environment variables and existing agent configs (~/.claude.json, ~/.gemini/config.json). Configuration can also be set manually:

Installed apps, CLI sign-ins, and API access are separate. thwip can report a detected Claude, Gemini, or Codex CLI login, but the current SDK adapters require a provider API key. A ChatGPT, Claude, or Google subscription does not automatically provide a reusable third-party API key. Ollama needs no key when its local server is running.

[defaults]
agent = "claude"
model = "claude-opus-5"
project = "."
theme = "dark"
stream = true
auto_save = true
confirm_tools = true

[keys]
anthropic = "sk-ant-..."
google = "AIza..."
openai = "sk-..."
deepseek = "sk-..."
groq = "gsk_..."
openrouter = "sk-or-..."

[ollama]
host = "http://localhost:11434"

[fallback]
enabled = true
chain = [
    "claude/claude-opus-5",
    "google/gemini-3.7-flash",
    "openai/gpt-5.6-terra",
    "deepseek/deepseek-v4-flash",
    "ollama/llama3.3"
]

Prefer /key <provider> over editing the file directly. Mutating workspace tools ask for confirmation by default, file access is restricted to the selected project, and Thwip stores its config and saved sessions with user-only permissions.


License

MIT License

Release files for thwip-cli 1.1.3

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

Source distribution (sdist)

Source distribution for thwip-cli 1.1.3
File Size Uploaded
thwip_cli-1.1.3.tar.gz 120.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for thwip-cli 1.1.3
File Interpreter ABI Platform
thwip_cli-1.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 185.3 kB

Release files / thwip_cli-1.1.3.tar.gz

Download URL thwip_cli-1.1.3.tar.gz
Size 120.5 kB
Tags Source
SHA-256 checksum
How to use checksums
9986553046cd39e9ff9e9c4f1f2e21b6cf0332f6f1df865483a24b1d7e803c6c
BLAKE2b-256 checksum
How to use checksums
3e109497bc97c31ccca78be8c7228a095c1959aca6e3f024979b17781c36ec8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.

Transparency log

Release files / thwip_cli-1.1.3-py3-none-any.whl

Download URL thwip_cli-1.1.3-py3-none-any.whl
Size 64.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
515819b2ef28890a83f7633c5acd6e686b470bb4eda0f9fcd26d542ff942a3dc
BLAKE2b-256 checksum
How to use checksums
ad09648d44194db44133a05ad2cb6e16a6436e0b3b358a278ac4ad3d124f9b9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 29, 2026.

Transparency log

Release history Release notifications | RSS feed

1.8.0

2 release files

1.7.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

This release

1.1.3 This release

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

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