Open source CLI coding agent powered by Claude
Project description
Open Claude Code
██████╗ ██████╗ ███████╗███╗ ██╗ ██████╗██╗ █████╗ ██╗ ██╗██████╗ ███████╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║ ██╔════╝██║ ██╔══██╗██║ ██║██╔══██╗██╔════╝
██║ ██║██████╔╝█████╗ ██╔██╗ ██║ ██║ ██║ ███████║██║ ██║██║ ██║█████╗
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║ ██║ ██║ ██╔══██║██║ ██║██║ ██║██╔══╝
╚██████╔╝██║ ███████╗██║ ╚████║ ╚██████╗███████╗██║ ██║╚██████╔╝██████╔╝███████╗
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
██████╗ ██████╗ ██████╗ ███████╗
██╔════╝██╔═══██╗██╔══██╗██╔════╝
██║ ██║ ██║██║ ██║█████╗
██║ ██║ ██║██║ ██║██╔══╝
╚██████╗╚██████╔╝██████╔╝███████╗
╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝
An open-source CLI coding assistant that reproduces Claude Code with full transparency.
🔄 This project is a fork of Mistral Vibe, modified to be fully compatible with Anthropic's Claude API format. Our goal is to provide an open-source alternative that lets you see exactly how an AI coding assistant works under the hood.
Why Open Claude Code?
While Claude Code is a powerful coding assistant, it operates as a closed-source tool. Open Claude Code aims to:
- 🔓 Full Transparency: See exactly how the AI assistant processes your requests, makes tool calls, and generates responses
- 📖 Streaming Output: Support streaming ouput, you don't have to wait for serveral minutes in
claude codeterminal without any feedback due the non-streaming - 🔌 Claude API Compatible: Native support for Anthropic's
/v1/messagesAPI format, including streaming - 🛠️ Extensible: Add custom tools, providers, and configurations
- 🌐 Provider Flexibility: Use Anthropic's API directly, or configure custom endpoints (proxies, self-hosted models)
- 📖 Learn by Doing: Understand how agentic AI coding assistants work by examining the source code
Key Features
- Native Anthropic API Support: First-class support for Claude models via Anthropic's native API format
- Multi-Provider Architecture: Supports OpenAI-compatible APIs, Anthropic, and custom providers
- Interactive Chat: A conversational AI agent that understands your requests and breaks down complex tasks
- Image Paste Support: Paste images directly from clipboard with
Ctrl+V- images appear as[image#1]placeholders (macOS supported) - Powerful Toolset:
- Read, write, and patch files (
read_file,write_file,search_replace) - Execute shell commands in a stateful terminal (
bash) - Recursively search code with
grep(withripgrepsupport) - Manage a
todolist to track the agent's work
- Read, write, and patch files (
- Project-Aware Context: Automatically scans your project's file structure and Git status
- Advanced CLI Experience: Autocompletion, persistent history, beautiful themes
- Safety First: Tool execution approval system
[!WARNING] Works on Windows, but we officially support and target UNIX environments.
Installation
Using pip (recommended)
uv pip install ccvibe --sytem
From source
git clone https://github.com/linkedlist771/open-claude-code
cd open-claude-code
uv sync
uv run ccvibe
Quick Start
-
Navigate to your project's root directory:
cd /path/to/your/project
-
Run Open Claude Code:
ccvibe
-
If this is your first time running, it will:
- Create a default configuration file at
~/.vibe/config.toml - Prompt you to enter your API key
- Prompt you to configure the API base URL (for custom endpoints)
- Save your settings for future use
- Create a default configuration file at
-
Start interacting with the agent!
Configuration
Provider Configuration
Open Claude Code supports multiple API providers. Configure them in ~/.vibe/config.toml:
# Anthropic (Claude) - Native API support
[[providers]]
name = "anthropic"
api_base = "https://api.anthropic.com"
api_key_env_var = "ANTHROPIC_API_KEY"
api_base_env_var = "ANTHROPIC_API_BASE" # Optional: override via environment
api_style = "anthropic" # Use native Anthropic API format
backend = "generic"
# OpenAI-compatible provider
[[providers]]
name = "openai"
api_base = "https://api.openai.com/v1"
api_key_env_var = "OPENAI_API_KEY"
api_style = "openai"
backend = "generic"
# Custom endpoint (e.g., proxy or self-hosted)
[[providers]]
name = "custom"
api_base = "https://your-proxy.example.com"
api_key_env_var = "CUSTOM_API_KEY"
api_style = "anthropic" # or "openai" depending on the API format
backend = "generic"
API Styles
anthropic: Native Anthropic/v1/messagesAPI format with full streaming supportopenai: OpenAI-compatible/chat/completionsformat
API Key Configuration
- Interactive Setup: Run
ccvibeand follow the prompts - Environment Variables:
export ANTHROPIC_API_KEY="your_api_key" export ANTHROPIC_API_BASE="https://your-custom-endpoint.com" # Optional
.envFile: Create~/.vibe/.env:ANTHROPIC_API_KEY=your_api_key ANTHROPIC_API_BASE=https://your-custom-endpoint.com
Model Configuration
[[models]]
name = "claude-sonnet-4-5-20250929"
provider = "anthropic"
alias = "claude-sonnet-4-5"
input_price = 3.0
output_price = 15.0
# Set the active model
active_model = "claude-sonnet-4-5"
Usage
Interactive Mode
ccvibe
- Multi-line Input: Press
Ctrl+JorShift+Enter - Paste Images: Press
Ctrl+Vto paste image from clipboard (粘贴图片:按Ctrl+V从剪贴板粘贴图片) - Clear Images: Press
Ctrl+Shift+Xto clear all attached images (清除图片:按Ctrl+Shift+X清除所有附加的图片) - File Paths: Reference files with
@(e.g.,@src/main.py) - Shell Commands: Prefix with
!to bypass the agent (e.g.,!ls -l)
Programmatic Mode
ccvibe --prompt "Refactor the main function to be more modular."
With Auto-Approve
ccvibe --auto-approve "Fix all linting errors in the project"
Architecture
Open Claude Code uses a modular adapter pattern for API communication:
┌─────────────────────────────────────────────────────────┐
│ Open Claude Code │
├─────────────────────────────────────────────────────────┤
│ Agent Core │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Tools │ │ Context │ │ History │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Backend Layer │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Anthropic Adapter │ │ OpenAI Adapter │ │
│ │ (/v1/messages) │ │ (/chat/completions) │ │
│ └─────────────────────┘ └─────────────────────┘ │
├─────────────────────────────────────────────────────────┤
│ Provider Config │
│ api_base, api_key, api_style, etc. │
└─────────────────────────────────────────────────────────┘
MCP Server Support
Extend capabilities with Model Context Protocol servers:
[[mcp_servers]]
name = "fetch_server"
transport = "stdio"
command = "uvx"
args = ["mcp-server-fetch"]
Custom Tools
Add custom tools by placing Python files in ~/.vibe/tools/:
from vibe.core.tools.base import BaseTool, BaseToolConfig
class MyCustomTool(BaseTool):
name = "my_tool"
description = "Does something useful"
async def execute(self, **kwargs):
# Your implementation
pass
Acknowledgments
This project is based on Mistral Vibe by Mistral AI. We thank them for open-sourcing their work, which made this project possible.
License
Copyright 2025 Mistral AI (original work) Copyright 2025 Open Claude Code Contributors (modifications)
Licensed under the Apache License, Version 2.0. See LICENSE for details.
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 ccvibe-1.1.4.tar.gz.
File metadata
- Download URL: ccvibe-1.1.4.tar.gz
- Upload date:
- Size: 271.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5f6681618174a4cb90e13ad962d346efbbc76d3c28574db237b46944d9e7f3b
|
|
| MD5 |
0fdc060b5a78b8c8b65b8301c72b39fc
|
|
| BLAKE2b-256 |
3d96121b11769b01df31282ec5d2e8641b7d48af7c1ebff0e0767d2d0e8558c6
|
File details
Details for the file ccvibe-1.1.4-py3-none-any.whl.
File metadata
- Download URL: ccvibe-1.1.4-py3-none-any.whl
- Upload date:
- Size: 176.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0185c2e972ee80e5ac0a596658920bf83139ba716cea4dccdb056bda8e5ca38a
|
|
| MD5 |
2f41a3b268ac2568acef09f7a7a59e4e
|
|
| BLAKE2b-256 |
0d757937a8238627be49ff569e3971c7c994281b91e79b60b2e80fcf0bbda2ec
|