# π Coro Code
**Language:** [English](README.md) | [δΈζ](README_zh.md)
_A high-performance AI coding agent written in Rust with a rich terminal UI_

[](https://www.rust-lang.org)
[](LICENSE-MIT)
---
Coro Code is a high-performance AI coding agent written in Rust with a rich terminal UI. Formerly known as **Trae Agent Rust**, it remains compatible with the original tool spec while focusing on speed, reliability, and great UX.
## β¨ Highlights
- π **High Performance**: Written in Rust for speed and memory safety
- π¨ **Rich Terminal UI**: Beautiful, interactive interface with real-time updates
- π§ **Easy Configuration**: Support for multiple LLM providers with flexible config options
- π οΈ **Powerful Tools**: Built-in bash execution, file operations, and extensible tool system
- π **Environment Variables**: Comprehensive support for API keys, base URLs, and model configuration
- π¦ **Cross-Platform**: Works seamlessly on macOS, Linux, and Windows
## π Quick Start
### π Prerequisites
- π¦ Rust stable (1.70+)
- π An API key (OpenAI recommended; Anthropic/Google coming soon)
### π¦ Install
```bash
cargo install --git https://github.com/Blushyes/coro-code --bin coro
```
### βΆοΈ Run
```bash
# Interactive mode (recommended)
coro
# Single task
coro "Fix the bug in main.rs"
```
### Configuration
**Option A:** Environment variables
```bash
# OpenAI
export OPENAI_API_KEY="your_openai_api_key"
export OPENAI_MODEL="gpt-4o"
# Optional: Custom base URL and model for OpenAI-compatible APIs
export OPENAI_BASE_URL="https://api.deepseek.com"
export OPENAI_MODEL="deepseek-chat"
# Or use generic overrides for any protocol
export CORO_BASE_URL="https://api.custom.com"
export CORO_MODEL="custom-model"
```
**Option B:** Configuration file
Create a `coro.json` file:
```json
{
"protocol": "openai",
"base_url": "https://api.deepseek.com",
"api_key": "your-api-key",
"model": "deepseek-chat",
"params": {
"max_tokens": 131072,
"temperature": 0.7,
"top_p": 0.9
}
}
```
### Usage
```bash
# Interactive mode
coro
# Direct command
coro "Help me refactor this function"
# With specific config
coro --config custom.json "Analyze this codebase"
```
## π€ Supported Models
| Provider | Models | Status |
| ---------------- | ----------------------- | --------- |
| π’ **OpenAI** | `gpt-4o`, `gpt-4o-mini` | β
Ready |
| π‘ **Anthropic** | `claude-3.5` family | π§ Coming |
| π΅ **Google** | `gemini-1.5` family | π§ Coming |
### π§ Environment Variables Reference
| Variable | Description | Example |
| ----------------------- | ------------------------------------------ | ------------------------------------------- |
| `OPENAI_API_KEY` | OpenAI API key | `sk-...` |
| `OPENAI_BASE_URL` | Custom base URL for OpenAI-compatible APIs | `https://api.deepseek.com` |
| `OPENAI_MODEL` | Custom model for OpenAI-compatible APIs | `gpt-4o`, `deepseek-chat` |
| `ANTHROPIC_API_KEY` | Anthropic API key | `sk-ant-...` |
| `ANTHROPIC_BASE_URL` | Custom base URL for Anthropic API | `https://api.anthropic.com` |
| `ANTHROPIC_MODEL` | Custom model for Anthropic API | `claude-3-5-sonnet-20241022` |
| `GOOGLE_API_KEY` | Google AI API key | `AIza...` |
| `GOOGLE_BASE_URL` | Custom base URL for Google AI API | `https://generativelanguage.googleapis.com` |
| `GOOGLE_MODEL` | Custom model for Google AI API | `gemini-pro`, `gemini-1.5-pro` |
| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key | `...` |
| `AZURE_OPENAI_BASE_URL` | Azure OpenAI endpoint | `https://your-resource.openai.azure.com` |
| `AZURE_OPENAI_MODEL` | Custom model for Azure OpenAI | `gpt-4`, `gpt-35-turbo` |
| `CORO_BASE_URL` | Generic base URL override (any protocol) | `https://api.custom.com` |
| `CORO_PROTOCOL` | Force specific protocol | `openai`, `anthropic` |
| `CORO_MODEL` | Generic model override (any protocol) | `gpt-4o`, `claude-3-5-sonnet` |
## πΊοΈ Roadmap
**Status Legend:** β
Completed | π§ In Progress | π Planned
π Phase 1: Core Experience
| Priority | Status | Feature | Description |
| -------- | ------ | --------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| π₯ High | π§ | **First-time Setup Management** | Guided wizard (detect/create openai.json or env vars), API key validation, default models & examples |
| π₯ High | β
| **Refactor Config Loading Logic** | Unified priority (CLI args > env vars > JSON file), friendly error messages & diagnostics, optional hot reload |
| π₯ High | π | **Tool Call Permission System** | Tool/command/directory whitelist, interactive confirmation, privilege escalation & sensitive operation warnings |
π¨ Phase 2: User Experience Enhancement
| Priority | Status | Feature | Description |
| --------- | ------ | ---------------------------------------- | ------------------------------------------------------------------------------------------------ |
| π‘ Medium | π | **CORO.md Custom Prompts Support** | Project/subdirectory level overrides, scenario templates (bugfix/refactor/docs/test) |
| π‘ Medium | π§ | **UI Layout Optimization & Unification** | Header/Status/Input style consistency, keyboard shortcuts & interaction consistency optimization |
| π‘ Medium | π | **Trajectory Replay & Export** | Trajectory visualization, one-click replay, export to JSON/Markdown |
| π¨ Low | π | **Logo Design (gemini-cli style)** | Visual identity design |
π€ Phase 3: Intelligence & Performance
| Priority | Status | Feature | Description |
| --------- | ------ | ---------------------------------- | ------------------------------------------------------------------------------------ |
| π‘ Medium | π | **Multi-model & Auto Routing** | Auto model selection by task type, failure auto-downgrade & retry strategies |
| π‘ Medium | π | **Context Optimization & Caching** | File summary caching, duplicate reference deduplication, token budget control |
| π‘ Medium | β
| **Token Compression** | Intelligent context compression, selective token reduction, adaptive context windows |
| π΅ Low | π | **MCP Extension Ecosystem** | Common provider presets & templates, one-click start/stop external tools |
π Phase 4: Platform & Ecosystem
| Priority | Status | Feature | Description |
| -------- | ------ | ------------------------------ | ----------------------------------------------------------------------------- |
| π΅ Low | π | **Core WASM Support** | Browser/plugin environment ready, isomorphic tool interface & minimal runtime |
| π΅ Low | π | **Cross-platform Enhancement** | macOS/Linux/Windows/WSL detail adaptation & stability improvements |
| π΅ Low | π | **Plugin Tool System** | Third-party tool registration spec, version & dependency declaration |
π‘οΈ Phase 5: Security & Quality
| Priority | Status | Feature | Description |
| --------- | ------ | ---------------------------- | ---------------------------------------------------------------------------- |
| π‘ Medium | π | **Security & Rate Limiting** | Sandbox mode (restricted bash/network switches), concurrency & rate limiting |
| π΅ Low | π | **Testing & Benchmarks** | End-to-end test cases, performance benchmarks & comparison reports |
## π οΈ Development
### Context Export/Restore (Persistence)
The core supports exporting the conversation and execution context to JSON and restoring it later:
```rust
use coro_core::agent::{AgentBuilder, PersistedAgentContext};
// Export
let json = agent.export_context_json()?; // as JSON string
agent.export_context_to_file(".coro/context.json")?; // or to file
// Restore
agent.restore_context_from_json(&json)?; // from JSON
agent.restore_context_from_file(".coro/context.json")?; // or from file
// Work with the structured snapshot directly:
let snap = agent.export_context_snapshot()?;
let json2 = snap.to_json()?;
let snap2 = PersistedAgentContext::from_json(&json2)?;
agent.restore_context_from_snapshot(snap2)?;
```
Notes:
- Snapshot contains `conversation_history`, `AgentExecutionContext`, and optional `AgentConfig`.
- On restore, saved config (if present) is applied; missing tool-result pairs are handled automatically on next execution.
- No need to manually re-inject a system prompt; the agent handles that as needed.
### Pre-commit Hooks
We strongly recommend setting up pre-commit hooks to maintain code quality. The repository includes scripts to automatically install hooks that run formatting, linting, and tests before each commit.
Choose the appropriate script for your platform:
```bash
# Linux/macOS
./scripts/setup-pre-commit-hooks.sh
# Windows PowerShell
.\scripts\setup-pre-commit-hooks.ps1
# Windows Command Prompt
scripts\setup-pre-commit-hooks.bat
```
The pre-commit hook will automatically run:
- **Code formatting** (`cargo fmt --check`)
- **Linting** (`cargo clippy`)
- **Tests** (`cargo test`)
For more details, see [scripts/README.md](scripts/README.md).
### Contributing
1. Fork the repository
2. Create a feature branch
3. **Set up pre-commit hooks** (recommended)
4. Make your changes
5. Ensure all tests pass
6. Submit a pull request
## π License
Dual licensed under your choice of:
- **Apache-2.0** ([LICENSE-APACHE](LICENSE-APACHE))
- **MIT** ([LICENSE-MIT](LICENSE-MIT))
## π Acknowledgments
- **[Trae Agent](https://github.com/bytedance/trae-agent)** for the original Python implementation and spec
- **[iocraft](https://github.com/ccbrown/iocraft)** for the beautiful terminal UI framework
- **OpenAI, Anthropic, and Google** for model APIs
- **Rust community** for the amazing ecosystem
---
Made with β€οΈ in Rust