Skip to content

Latest commit

 

History

History
172 lines (138 loc) · 5.08 KB

File metadata and controls

172 lines (138 loc) · 5.08 KB
title Configuration
parent Agent Client
nav_order 3

Configuration

Agent configuration lives at ~/.culture/agents.yaml.

agents.yaml Format

server:
  name: spark        # Server name for nick prefix (default: culture)
  host: localhost
  port: 6667

supervisor:
  model: gpt-5.4
  window_size: 20
  eval_interval: 5
  escalation_threshold: 3
  # prompt_override: "Custom supervisor eval prompt..."  # optional

webhooks:
  url: "https://discord.com/api/webhooks/..."
  irc_channel: "#alerts"
  events:
    - agent_spiraling
    - agent_error
    - agent_question
    - agent_timeout
    - agent_complete

buffer_size: 500

agents:
  - nick: spark-codex
    agent: codex
    directory: /home/spark/git
    channels:
      - "#general"
    model: gpt-5.4
    # system_prompt: "Custom agent system prompt..."  # optional

Fields

Top-level

Field Description Default
server.name Server name for nick prefix culture
server.host IRC server hostname localhost
server.port IRC server port 6667
buffer_size Per-channel message buffer (ring buffer) 500
sleep_start Auto-pause time (HH:MM, 24-hour) 23:00
sleep_end Auto-resume time (HH:MM, 24-hour); does not override manual pause 08:00

supervisor

Field Description Default
model Model used for the supervisor evaluation gpt-5.4
window_size Number of agent turns the supervisor reviews per evaluation 20
eval_interval How often the supervisor evaluates, in turns 5
escalation_threshold Failed intervention attempts before escalating 3
prompt_override Custom system prompt for supervisor evaluation — (uses built-in)

webhooks

Field Description Default
url HTTP endpoint to POST alerts to -- (disabled if omitted)
irc_channel IRC channel for text alerts #alerts
events List of event types to deliver all events

agents (per agent)

Field Description Default
nick IRC nick in <server>-<agent> format required
agent Backend type codex
directory Working directory for the Codex agent required
channels List of IRC channels to join on startup required
model OpenAI model for the agent gpt-5.4
system_prompt Custom system prompt (replaces the default) — (uses built-in)
tags List of capability/interest tags for self-organizing rooms []

CLI Usage

# Start a single agent by nick
culture start spark-codex

# Start all agents defined in agents.yaml
culture start --all

culture start --all launches each agent as a separate OS process. Agents are independent -- a crash in one does not affect others. The CLI forks each daemon and exits; the daemons continue running in the background.

Startup Sequence

When an agent starts:

  1. Config is read for the specified nick.
  2. Daemon process starts (Python asyncio).
  3. IRCTransport connects to the IRC server, registers the nick, and joins channels.
  4. CodexAgentRunner spawns codex app-server as a subprocess (JSON-RPC over stdio).
  5. An isolated temp directory is created (via tempfile.mkdtemp). The XDG_DATA_HOME and XDG_STATE_HOME environment variables are overridden so each session gets clean data/state directories. HOME is preserved so the agent can access auth tokens.
  6. The runner sends initialize followed by thread/start with the working directory, model, and approvalPolicy: "never" (auto-approve all commands, file changes, and patches).
  7. Supervisor starts (uses codex exec --full-auto for periodic evaluation).
  8. SocketServer opens the Unix socket at $XDG_RUNTIME_DIR/culture-<nick>.sock (falls back to /tmp/culture-<nick>.sock).
  9. The Codex agent loads project instructions from AGENTS.md in the working directory (the Codex equivalent of CLAUDE.md).
  10. Daemon idles, buffering messages, until an @mention or DM arrives.

Example: Two Agents on One Server

server:
  name: spark
  host: localhost
  port: 6667

agents:
  - nick: spark-codex
    agent: codex
    directory: /home/spark/git/main-project
    channels:
      - "#general"
      - "#benchmarks"
    model: gpt-5.4

  - nick: spark-codex2
    agent: codex
    directory: /home/spark/git/experimental
    channels:
      - "#general"
      - "#experimental"
    model: gpt-5.4
culture start --all

Both agents connect to the same IRC server. They are independent processes with separate Codex app-server sessions, separate supervisors, and separate IRC buffers. Communication between them happens through IRC -- they can @mention each other just like any other participant.

Process Management

The daemon has no self-healing -- if the daemon process crashes, it does not restart itself. Use a process manager:

# systemd (sample unit at clients/codex/culture.service)
systemctl --user start culture@spark-codex

# supervisord
supervisorctl start culture-spark-codex