BUILD / DEVELOP

Getting Started

Set up a contributor development environment and build the repository.

Source documentation
Read as MarkdownView source

Prerequisites

Building

Install pre-commit hooks and build the project:

pre-commit install
cargo build

Testing

cargo test

Running a harness session

Build both binaries, then let the CLI start Agentic API and configure the harness in an isolated temporary home:

cargo build -p agentic-server --bins
./target/debug/agentic run codex --model Qwen/your-model
./target/debug/agentic run claude --model Qwen/your-model

For an existing OpenAI-compatible upstream, pass its http:// or https:// base URL with --upstream. The harness model defaults to the first entry from the upstream's /v1/models; add --model to choose another. SQLite is the default; pass --database-url postgresql://... for a shared PostgreSQL deployment. Use agentic validate to check prerequisites without launching a session.

For a deliberately unattended session in an externally isolated environment, add --yolo. This skips Claude Code permission checks and disables Codex approvals and sandboxing.

Claude sessions always receive the compatible medium effort in both the CLI argument and CLAUDE_CODE_EFFORT_LEVEL, because Claude Code gives the environment variable precedence over --effort. Qwen3.8-27B's vLLM chat template accepts low, medium, and xhigh; Claude Code's default high produces a template ValueError. Override the pinned value with AGENTIC_CLAUDE_EFFORT. See Harness CLI Testing for the full local and Kubernetes verification checklist.

Linting and Formatting

cargo clippy --all-targets -- -D warnings   # lint
cargo fmt                                     # format
cargo fmt -- --check                          # check formatting only

To run all pre-commit hooks manually:

pre-commit run --all-files

Shared Build Cache with sccache

sccache caches compiled artifacts so that switching branches, cleaning target/, or working across multiple git worktrees does not require rebuilding every dependency from scratch.

Setup

Install sccache, then add the following to your shell profile (~/.bashrc, ~/.zshrc, etc.):

export RUSTC_WRAPPER=$(which sccache)

Warming the cache

After setting up sccache, run a full clippy pass in any worktree to populate the cache:

cargo clippy --workspace --all-targets

Subsequent builds reuse the cached artifacts automatically. Cargo still prints Compiling / Checking for every crate, but cache-hit compilations complete in milliseconds instead of seconds.

Check hit rates with sccache --show-stats. See sccache usage for more configuration options.

Releases

Maintainers should follow the release guide to prepare a version and trigger the GitHub Actions workflows that validate and publish to crates.io and PyPI. Merging a PR does not publish a package.