Skip to content

Latest commit

 

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opencodeR

Rust port of the OpenCode AI coding agent.

License: MIT

opencodeR is a full-featured HTTP API server and CLI client for AI-assisted coding, rewritten from the original opencode TypeScript codebase into Rust. It provides the same API surface with better performance, lower memory usage, and cross-platform binaries.

Quick Start

# Download the latest release for your platform
curl -fsSL https://github.com/grave0x/opencodeR/releases/latest/download/opencodeR-x86_64-unknown-linux-gnu.tar.gz | tar xz

# Start the server
./opencodeR-server --headless --port 8081

# In another terminal, run a prompt
./opencodeR run "Explain this codebase" --port 8081

Binaries

Binary Description Default mode
opencodeR Combined binary — server + client + TUI opencode-style agent chat TUI (home screen → sessions)
opencodeR-server HTTP API server Server dashboard TUI (--headless for headless)
opencodeR-client Remote CLI client Connects to running server (--base-url)

opencodeR (combined)

USAGE:
    opencodeR [COMMAND]

COMMANDS:
    server      Start the headless HTTP server
    client      Connect to a remote server interactively
    run         Run a one-shot prompt and exit
    tui         Launch the server dashboard TUI
    sessions    List sessions from a running server
    models      List available AI models
    providers   List configured providers
    agents      List available agents
    export      Export a session as JSON
    import      Import session data from JSON file
    completion  Generate shell completion script

opencodeR-server

# Server dashboard TUI (default)
opencodeR-server

# Headless mode
opencodeR-server --headless --port 8081 --password mysecret

opencodeR-client

# Interactive REPL
opencodeR-client --base-url http://127.0.0.1:8081

# One-shot prompt
opencodeR-client --base-url http://127.0.0.1:8081 --one-shot "Refactor this"

API Endpoints

The server implements the full opencode HTTP API:

Group Endpoints Status
Health GET /api/health ✅
Sessions CRUD + prompt, events, history, messages, revert, interrupt, context, wait ✅
Agents GET /api/agent ✅
Models GET /api/model ✅
Providers GET /api/provider/:id ✅
Filesystem GET /api/fs/read/*path, list, find ✅
PTY CRUD + connect token, WebSocket connect ✅ (real processes)
Events GET /api/event (SSE) ✅
Integrations List, connect key/OAuth, attempt flow ✅
Permissions Request/reply flow, saved rules ✅
Questions Ask/reply/reject ✅
Commands GET /api/command ✅
Skills GET /api/skill ✅
Auth Password-based Basic auth middleware ✅

Architecture

                   ┌─────────────────────────┐
                   │   opencodeR binary       │
                   │  (CLI / TUI / Server)    │
                   └─────────┬───────────────┘
                             │
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
      ┌──────────┐   ┌──────────┐   ┌──────────┐
      │  Server  │   │  Client  │   │   TUI    │
      │  Crate   │   │  Crate   │   │  (ratatui)│
      └────┬─────┘   └────┬─────┘   └──────────┘
           │              │
           └──────┬───────┘
                  ▼
          ┌──────────────┐
          │  Core Crate  │
          │ (traits +    │
          │  in-memory)  │
          └──────┬───────┘
                 │
          ┌──────┴───────┐
          │  Schema +    │
          │  Protocol    │
          │  Crates      │
          └──────────────┘

Crate structure

Crate Purpose
opencode-r-schema Data types (session, agent, model, provider, PTY, etc.)
opencode-r-protocol HTTP routes, error types, request/response payloads
opencode-r-core Service traits + in-memory implementations
opencode-r-server Axum router, handlers, middleware (auth, access log)
opencode-r-client HTTP client library for the API
opencode-r-cli Binary entry points + TUI
opencode-r-llm LLM provider abstraction (in progress)
opencode-r-plugin Plugin system (in progress)

Building from source

git clone https://github.com/grave0x/opencodeR.git
cd opencodeR
cargo build --release --bin opencodeR --bin opencodeR-server --bin opencodeR-client

The release binaries will be in target/release/.

Cross-compilation

# Linux ARM64
cargo build --release --target aarch64-unknown-linux-gnu --bin opencodeR

# Windows
cargo build --release --target x86_64-pc-windows-msvc --bin opencodeR

Packaging

Format Location
Arch Linux packaging/arch/PKGBUILD
Debian/Ubuntu packaging/debian/
RPM (Fedora/RHEL) packaging/rpm/opencodeR.spec
Cargo cargo install opencode-r-cli

Configuration

Environment variable Default Description
OPENCODE_PORT 8081 Server port
OPENCODE_PASSWORD (none) Enable Basic auth
OPENCODE_BASE_URL http://127.0.0.1:8081 Server URL for client
RUST_LOG info Log level (e.g. debug, opencode_r_server=info)

Feature comparison

See features/feature-comparison.json for a detailed comparison between opencodeR and the original opencode.

See features/ROADMAP.md for the planned feature roadmap.

License

MIT — see LICENSE.

About

Rust port of the OpenCode AI coding agent — HTTP API server, CLI client, and TUI

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages