Skip to main content

Introduction

arc is a lightweight Python CLI and daemon for agent dispatch, cron scheduling, and Discord integration. It replaces the OpenClaw agent router with roughly 800 lines of Python, using acpx for Claude Code session management and httpx for Ollama models.

Why arc?

OpenClaw was a capable agent orchestration layer, but it carried significant operational complexity: a TypeScript runtime, a process manager, JSON-heavy config files, and tight coupling between components. arc trades breadth for simplicity.

The goals:

  • A single arc binary that works from the CLI, as a background daemon, and as a Discord bot
  • Two dispatch paths: Claude (via acpx) and Ollama (via HTTP), selected automatically by model prefix
  • Standard cron expressions backed by APScheduler, not a custom scheduler
  • Agent config as plain YAML files you can read and edit without tooling
  • Zero external services required: everything runs from ~/.arc/

Features

FeatureDescription
arc askSend a prompt to any agent from the command line
Agent dispatchRoute to Claude or Ollama based on model prefix
Unix socket IPCDaemon accepts requests from CLI, Discord, and cron without spawning new processes
APScheduler cronStandard 5-field cron expressions, enable/disable per job
Discord botBind agents to channels; per-channel model switching with /model
Discord threadsOptional thread-per-conversation with persistent acpx sessions
Rate limitingSliding-window per-channel rate limit
Git integrationAuto-pull workspace repos before each dispatch
OpenClaw migrationarc import-openclaw converts agents and cron jobs
Token trackingarc tokens wraps codeburn for Claude usage reporting

Quick example

# Install
pip install arc-cli

# First-run setup
arc setup

# Create an agent
arc agent create --name coach \
--workspace /workspace/fitness-coach \
--model sonnet

# Start the daemon
arc daemon start

# Send a prompt
arc ask --agent coach "What's my workout today?"

The daemon routes the request through IPC, dispatches to Claude via acpx, and prints the response. If the daemon is not running, arc ask falls back to direct dispatch automatically.

Architecture at a glance

CLI / Discord / Cron
|
Unix socket (IPC)
|
ArcDaemon
|
Dispatcher
/ \
acpx httpx
(Claude) (Ollama)

Continue to Architecture for a detailed breakdown, or jump to Quickstart to get running in five minutes.