# crizcraig/claude-code-infinite architecture

> Architecture diagram of the GitHub repository crizcraig/claude-code-infinite, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/crizcraig/claude-code-infinite
- Repository: https://github.com/crizcraig/claude-code-infinite

## Overview

Claude Code Infinite (`ccc`) launches Claude Code with a local relay so MemTree can manage conversation context while model traffic and native credentials remain on the Anthropic path. The main workflow is: select an environment and API key, launch Claude Code through the relay, classify turns, compress or index history, forward the request, and deliver display-only notices. The proxy also maintains lane-specific compressed routes for tool turns and logs request timing. The README documents these capabilities; sampled excerpts do not expose every proxy branch, so uncertain internal wiring is omitted.

Main entry points: [`src/proxy.ts`](https://github.com/crizcraig/claude-code-infinite/blob/main/src/proxy.ts) (Local relay), [`src/cli.ts`](https://github.com/crizcraig/claude-code-infinite/blob/main/src/cli.ts) (ccc launcher), [`src/memtree.ts`](https://github.com/crizcraig/claude-code-infinite/blob/main/src/memtree.ts) (MemTree client), [`src/hooks.ts`](https://github.com/crizcraig/claude-code-infinite/blob/main/src/hooks.ts) (Notice hooks)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch and setup"]
  node_cli["ccc launcher<br/>[cli.ts]"]
  node_args["Argument parsing<br/>[cli-args.ts]"]
  node_config["Environment keys<br/>[config.ts]"]
end

subgraph group_proxy["Local proxy"]
  node_proxy["Local relay<br/>[proxy.ts]"]
  node_routes["Lane routes<br/>[proxy.ts]"]
end

subgraph group_context["Context management"]
  node_turns["Turn shaping<br/>[turns.ts]"]
  node_memtree["MemTree client<br/>[memtree.ts]"]
end

subgraph group_feedback["Notices and records"]
  node_hooks["Notice hooks<br/>[hooks.ts]"]
  node_notices["Notice formatting<br/>[notices.ts]"]
  node_reqlog[("Request log<br/>[reqlog.ts]")]
end

node_user(("User"))
node_claude["Claude Code"]
node_polychat["MemTree API"]
node_anthropic["Anthropic API"]

node_user -->|"starts session"| node_cli
node_cli -->|"parses arguments"| node_args
node_cli -->|"loads or saves key"| node_config
node_cli -->|"starts relay"| node_proxy
node_cli -->|"installs plugin"| node_hooks
node_cli -->|"launches"| node_claude
node_claude -->|"sends requests"| node_proxy
node_proxy -->|"classifies and shapes"| node_turns
node_proxy -->|"requests compression or indexing"| node_memtree
node_memtree -->|"sends message history"| node_polychat
node_polychat -->|"returns memory context"| node_memtree
node_proxy -->|"checks and updates"| node_routes
node_proxy -->|"forwards model request"| node_anthropic
node_anthropic -->|"returns model response"| node_proxy
node_proxy -->|"returns response"| node_claude
node_proxy -->|"formats notice"| node_notices
node_proxy -->|"queues and parses notice"| node_hooks
node_claude -->|"runs display hooks"| node_hooks
node_proxy -->|"records request"| node_reqlog

click node_cli "https://github.com/crizcraig/claude-code-infinite/blob/main/src/cli.ts"
click node_args "https://github.com/crizcraig/claude-code-infinite/blob/main/src/cli-args.ts"
click node_config "https://github.com/crizcraig/claude-code-infinite/blob/main/src/config.ts"
click node_proxy "https://github.com/crizcraig/claude-code-infinite/blob/main/src/proxy.ts"
click node_turns "https://github.com/crizcraig/claude-code-infinite/blob/main/src/turns.ts"
click node_memtree "https://github.com/crizcraig/claude-code-infinite/blob/main/src/memtree.ts"
click node_routes "https://github.com/crizcraig/claude-code-infinite/blob/main/src/proxy.ts"
click node_hooks "https://github.com/crizcraig/claude-code-infinite/blob/main/src/hooks.ts"
click node_notices "https://github.com/crizcraig/claude-code-infinite/blob/main/src/notices.ts"
click node_reqlog "https://github.com/crizcraig/claude-code-infinite/blob/main/src/reqlog.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_args,node_config,node_user toneBlue
class node_proxy,node_routes toneAmber
class node_turns,node_memtree,node_polychat,node_anthropic toneMint
class node_hooks,node_notices,node_reqlog toneRose
class node_claude toneIndigo
```

## Components

### Launch and setup

- [ccc launcher](https://github.com/crizcraig/claude-code-infinite/blob/main/src/cli.ts): `src/cli.ts`
- [Argument parsing](https://github.com/crizcraig/claude-code-infinite/blob/main/src/cli-args.ts): `src/cli-args.ts`
- [Environment keys](https://github.com/crizcraig/claude-code-infinite/blob/main/src/config.ts): `src/config.ts`

### Local proxy

- [Local relay](https://github.com/crizcraig/claude-code-infinite/blob/main/src/proxy.ts): `src/proxy.ts`
- [Lane routes](https://github.com/crizcraig/claude-code-infinite/blob/main/src/proxy.ts): `src/proxy.ts`

### Context management

- [Turn shaping](https://github.com/crizcraig/claude-code-infinite/blob/main/src/turns.ts): `src/turns.ts`
- [MemTree client](https://github.com/crizcraig/claude-code-infinite/blob/main/src/memtree.ts): `src/memtree.ts`

### Notices and records

- [Notice hooks](https://github.com/crizcraig/claude-code-infinite/blob/main/src/hooks.ts): `src/hooks.ts`
- [Notice formatting](https://github.com/crizcraig/claude-code-infinite/blob/main/src/notices.ts): `src/notices.ts`
- [Request log](https://github.com/crizcraig/claude-code-infinite/blob/main/src/reqlog.ts): `src/reqlog.ts`

### Other components

- **User**
- **Claude Code**
- **MemTree API**
- **Anthropic API**

## Connections

- User → ccc launcher: starts session
- ccc launcher → Argument parsing: parses arguments
- ccc launcher → Environment keys: loads or saves key
- ccc launcher → Local relay: starts relay
- ccc launcher → Notice hooks: installs plugin
- ccc launcher → Claude Code: launches
- Claude Code → Local relay: sends requests
- Local relay → Turn shaping: classifies and shapes
- Local relay → MemTree client: requests compression or indexing
- MemTree client → MemTree API: sends message history
- MemTree API → MemTree client: returns memory context
- Local relay → Lane routes: checks and updates
- Local relay → Anthropic API: forwards model request
- Anthropic API → Local relay: returns model response
- Local relay → Claude Code: returns response
- Local relay → Notice formatting: formats notice
- Local relay → Notice hooks: queues and parses notice
- Claude Code → Notice hooks: runs display hooks
- Local relay → Request log: records request
