raskell-kage

Crates.ioraskell-kage
lib.rsraskell-kage
version0.1.4
created_at2026-01-03 16:20:13.316886+00
updated_at2026-01-03 16:20:13.316886+00
descriptionShadow agents for autonomous code work - a local-first agentic work orchestrator
homepage
repositoryhttps://github.com/raskell-io/kage
max_upload_size
id2020417
size1,665,573
Raffael Schneider (raffaelschneider)

documentation

README

kage mascot
Kage (影)

A local-first agentic work orchestrator.
Shadow agents working invisibly, executing with precision.

Rust Claude Code License

DocumentationDiscussionsContributing


Kage enables Claude Code agents to work autonomously while you're away, share context with each other, and scale across multiple repositories.

Quick Start

# Install via script
curl -fsSL https://kage.raskell.io/install.sh | sh

# Or via Cargo
cargo install kage

# Or via Docker
docker pull ghcr.io/raskell-io/kage:latest

# Run
kage daemon start
kage agent spawn --repo ~/code/myproject

Features

Feature Description
Supervisor Pattern Spawn agents with goals, monitor progress, enforce limits
Event Sourcing Immutable audit trails, replay, time-travel queries
Namespace Organization Group repos, share context across agents
Two-Tier Memory Working memory + persistent long-term storage
Multi-Subscription Pool multiple Claude subscriptions for parallel scaling
Single Binary Zero dependencies, just download and run

Why Kage

Running a single Claude Code session is straightforward. But what happens when you need agents working across multiple repositories? When you want to step away and let them work autonomously? When they need to share what they've learned?

Kage solves these problems with a supervisor architecture:

  • Spawn agents with specific goals — Give your agents clear objectives and let them work
  • Monitor health and progress — Track what your agents are doing in real-time
  • Enforce iteration limits — Set guardrails to prevent runaway execution
  • Checkpoint and resume — Save state, review progress, provide guidance, and continue

Architecture

┌─────────────────────────────────────────────────────┐
│                   Kage Daemon                       │
├─────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  │
│  │   Agent 1   │  │   Agent 2   │  │   Agent 3   │  │
│  │  (Claude)   │  │  (Claude)   │  │  (Claude)   │  │
│  └─────────────┘  └─────────────┘  └─────────────┘  │
│                                                     │
│  ┌───────────────────────────────────────────────┐  │
│  │              Memory Store                     │  │
│  │  ┌──────────────┐  ┌──────────────┐           │  │
│  │  │   Working    │  │  Long-term   │           │  │
│  │  │   Memory     │  │   Memory     │           │  │
│  │  └──────────────┘  └──────────────┘           │  │
│  └───────────────────────────────────────────────┘  │
│                                                     │
│  ┌───────────────────────────────────────────────┐  │
│  │           Subscription Pool                   │  │
│  │  ┌────┐ ┌────┐ ┌────┐ ┌────┐                  │  │
│  │  │ S1 │ │ S2 │ │ S3 │ │ S4 │  ...             │  │
│  │  └────┘ └────┘ └────┘ └────┘                  │  │
│  └───────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────┘

Configuration

Kage uses TOML for configuration with layered precedence:

CLI flags > Environment > Task-specific > Namespace > Global
# ~/.config/kage/config.toml

[daemon]
socket = "/tmp/kage.sock"
log_level = "info"

[defaults]
max_iterations = 50
checkpoint_interval = 10

[namespaces.backend]
repos = [
    "~/code/api-server",
    "~/code/auth-service",
]
memory_sharing = "full"

CLI Reference

Daemon

kage daemon start       # Start the daemon
kage daemon stop        # Stop the daemon
kage daemon status      # Check daemon status

Agents

kage agent spawn        # Spawn a new agent
kage agent list         # List active agents
kage agent attach <id>  # Attach to an agent
kage agent kill <id>    # Kill an agent

Tasks

kage task add "<goal>"  # Add a new task
kage task list          # List tasks
kage task status <id>   # Check task status
kage task resume <id>   # Resume a paused task

Memory

kage memory search "<query>"  # Search memories
kage memory list              # List recent memories
kage memory inject <target> --from <source>  # Share context

File Locations

Purpose Path
Global config ~/.config/kage/config.toml
State directory ~/.local/share/kage/state/
Daemon logs ~/.local/share/kage/logs/
Unix socket /tmp/kage.sock
Per-project config .kage/config.toml

Secrets (API keys) are stored in your OS keychain, never in plaintext files.

Built With

  • Rust — Memory-safe, fast, and reliable
  • Tokio — Async runtime
  • redb — Embedded key-value store (pure Rust)
  • tonic — gRPC framework
  • ratatui — Terminal UI

Documentation

Full documentation is available at kage.raskell.io/docs.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

Apache 2.0 — see LICENSE for details.

Related Projects

  • Claude Code — The primary AI agent supported by Kage
  • Sentinel — Security-first reverse proxy from raskell.io
Commit count: 0

cargo fmt