aphrodite 1.2.4

aphrodite: Chat Completions proxy with CCR, tool relay, and programmatic CCR for Hermes agent integration.
Documentation
# aphroditeβ€πŸ’‹β€Core Engine

> **CCR compression proxy + cdylib - classify, compress, store, preview.**
> **Sub-ms, 28 content types, 12,800Γ— max ratio.**

The core compression engine. Produces both the `aphrodite` binary (HTTP proxy on
`:9797`/`:9798`) and `libaphrodite.dylib` (loaded by the Hermes plugin via C ABI).

[crates.io](https://crates.io/crates/aphrodite) Β·
[docs](../../docs/README.md)

---

## Install

```bash
# From source (monorepo)
cargo build --release -p aphrodite

# From crates.io
cargo install aphrodite
```

---

## What it does

```
tool output β†’ classify β†’ template β†’ store β†’ <<<CCR:hash|type|size>>>
                                              β”‚
                                              β–Ό
                                         Agent (15 tok preview, not 500 tok raw)
```

Four pipeline stages, all under 1ms:

1. **Classify** - 28-type regex classifier (`diff`, `build_output`, `code_rust`, …)
2. **Template** - TOML-driven preview templates per content type
3. **Store** - blake3 hash β†’ SQLite or in-memory β†’ CCR marker
4. **Preview** - Structured `[type:metadata]` the LLM reads instantly

---

## Architecture

```
src/
β”œβ”€β”€ lib.rs               ← 22 C ABI exports for dylib loading
β”œβ”€β”€ proxy.rs             ← HTTP proxy (:9797 cache, :9798 token)
β”œβ”€β”€ hooks.rs             ← transform_tool_result, terminal, pre/post LLM
β”œβ”€β”€ session.rs           ← Turn lifecycle, conversation index, catalog
β”œβ”€β”€ state.rs             ← AphroditeState, inline store, LRU, markers
β”œβ”€β”€ marker.rs            ← CCR marker formatting + parsing (<<<CCR:…>>>)
β”œβ”€β”€ catalog.rs           ← Full/compact/TOC catalog display
β”œβ”€β”€ resolve.rs           ← Recursive CCR expansion (3 levels deep)
β”œβ”€β”€ stage2.rs            ← Semantic reduction for JSON, build, diff, code
β”œβ”€β”€ struct_extract.rs    ← Code structure maps (Rust, Python, Go, JS/TS)
β”œβ”€β”€ config.rs            ← CLI args + TOML multi-config
β”œβ”€β”€ config_loader.rs     ← TOML + env var loading
β”œβ”€β”€ prefetch.rs          ← Background file read + compress threads
β”œβ”€β”€ preview.rs           ← detect_type, build_preview (shared across proxy + dylib)
β”œβ”€β”€ main.rs              ← Binary entry point
└── retrieve.rs          ← POST /retrieve β€” hash β†’ content, zstd decode, filter, paginate
```

## C ABI (22 functions)

The 22 `#[no_mangle] extern "C"` exports in `lib.rs` serve both the
`aphrodite-hermes` bridge crate (which re-exports a higher-level ABI β€” see
`crates/aphrodite-hermes/README.md`) and the Python plugin's ctypes bindings.

---

## Dependencies

- `headroom-core` - Content transforms + classifier + SQLite backend (vendored fork at `vendor/headroom/`)
- `axum` / `tokio` / `tower-http` - HTTP proxy (optional, gated behind `proxy` feature)
- `serde` / `serde_json` - Serialization
- `blake3` - Content-addressed hashing

---

## See Also

- [Installing Aphrodite]../../docs/install/README.md - which artifact you
  need, per-platform install guides, troubleshooting
- [aphrodite.toml Configuration]../../docs/config/aphrodite-toml.md - full
  TOML schema this crate's `config.rs` deserializes
- [Hermes Integration]../../docs/hermes-integration.md - how this binary's
  sibling dylib crate (`aphrodite-hermes`) plugs into Hermes Agent

## License

CC0-1.0 - public domain.