Frequently Asked Questions
Common questions about cyberian and multi-agent workflows.
General
What is cyberian?
cyberian is a Python CLI wrapper for agentapi that enables interaction with AI agent APIs in pipeline workflows. It provides:
- Multi-agent orchestration
- YAML-based workflow definitions
- Server lifecycle management
- Message routing and status monitoring
Which agents does cyberian support?
cyberian works with any agent that integrates with agentapi, including:
| Agent | Status | Notes |
|---|---|---|
| Claude Code | Fully supported | Primary target |
| OpenAI Codex | Supported | Requires specific flags |
| Aider | Supported | Basic integration |
| Custom agents | Supported | Via agentapi |
How is cyberian different from direct agentapi usage?
cyberian adds:
- Workflow orchestration: YAML-defined task trees with loops, conditions, and retries
- Template rendering: Jinja2 templates for dynamic instructions
- Success criteria: Python-based validation of task outputs
- Server management: Farm mode for multi-agent setups
- Message routing: Easy message sending and retrieval
Installation
What are the system requirements?
- Python 3.10+
- agentapi installed and in PATH
- One or more supported agents (Claude Code, Codex, etc.)
How do I install cyberian?
# Using uv (recommended)
uv pip install cyberian
# Using pip
pip install cyberian
# From source
git clone https://github.com/monarch-initiative/cyberian
cd cyberian
uv pip install -e .
Do I need to install agentapi separately?
Yes. agentapi is the underlying server that manages agent processes:
# Install agentapi
go install github.com/coder/agentapi@latest
# Verify installation
agentapi --version
Agents
Which agent should I use?
| Use Case | Recommended Agent |
|---|---|
| General coding tasks | Claude Code |
| Long-running research | Claude Code or Codex |
| Interactive development | Claude Code |
| Automated pipelines | Either (with --skip-permissions) |
How do I switch between agents?
Specify the agent type when starting a server or running a workflow:
# Claude Code
cyberian server start claude --skip-permissions
# Codex
cyberian server start codex --skip-permissions
# Run workflow with specific agent
cyberian run workflow.yaml --agent-type codex
Can I run multiple agents simultaneously?
Yes, using different ports or farm mode:
# Manual: different ports
cyberian server start claude --port 3284
cyberian server start codex --port 3285
# Farm mode: automatic port assignment
cyberian farm start farm.yaml
What does -s / --skip-permissions do and should I use it?
The -s or --skip-permissions flag tells the agent to bypass interactive approval prompts. This is required for fully automated workflows.
Without -s:
cyberian server start claude
The agent starts but will pause for permission approval on potentially dangerous operations (file writes, shell commands, etc.). You'll need to approve these via the agentapi web UI at http://localhost:3284/chat.
With -s:
cyberian server start claude -s
# or
cyberian server start claude --skip-permissions
The agent runs without pausing for approval. All operations execute automatically.
Which flag gets passed?
| Agent | Flag Passed |
|---|---|
| Claude Code | --dangerously-skip-permissions |
| Codex | --dangerously-bypass-approvals-and-sandbox |
When to use -s:
- Automated pipelines and CI/CD
- Long-running research workflows
- Batch processing
- Any workflow that should run unattended
When NOT to use -s:
- Untrusted workflows or inputs
- Production systems with sensitive data
- When you want to review agent actions
Our recommendation: Be explicit about permissions. If you're running automated workflows, use -s deliberately. If you're experimenting or don't fully trust the workflow, omit it and approve actions via the web UI.
# Explicit automation mode
cyberian server start claude -s --dir /tmp/sandbox
# Interactive mode (review via web UI)
cyberian server start claude --dir /tmp/sandbox
See also: Codex Integration for Codex-specific permission settings via config.toml.
Workflows
What is the workflow format?
YAML files defining task trees:
name: my-workflow
description: Example workflow
params:
query:
range: string
required: true
subtasks:
task1:
instructions: |
Do something with {{query}}.
COMPLETION_STATUS: COMPLETE
See Workflow Schema Reference for full details.
How do loops work?
Use loop_until for iterative tasks:
subtasks:
iterate:
instructions: Keep researching
loop_until:
status: DONE
message: "When finished, output DONE"
The task repeats until the agent outputs the status string.
This implements the Ralph Wiggum Pattern - an autonomous iteration technique popularized in 2025 where agents loop until completion with state persisted in files.
How do success criteria work?
Python code that validates task output:
subtasks:
generate:
instructions: Create output.json
success_criteria:
python: |
import os
result = os.path.exists("output.json")
max_retries: 3
retry_message: "File not found. Please create output.json"
Can I use external scripts for validation?
Yes:
success_criteria:
script: validate.py
max_retries: 2
The script must set result = True or result = False.
How do I pass parameters to workflows?
cyberian run workflow.yaml \
--param query="climate change" \
--param depth=3
In the workflow, access via Jinja2:
instructions: Research {{query}} to depth {{depth}}
Server Management
How do I start a server?
# Basic start
cyberian server start claude
# With skip-permissions (for automation)
cyberian server start claude --skip-permissions
# Specific port
cyberian server start claude --port 4000
# Specific working directory
cyberian server start claude --dir /path/to/workspace
How do I stop a server?
# By port
cyberian stop --port 3284
# By PID
cyberian stop 12345
# List servers first
cyberian list-servers
What does --skip-permissions do?
It passes agent-specific flags to skip interactive approval prompts:
| Agent | Flag Passed |
|---|---|
| Claude Code | --dangerously-skip-permissions |
| Codex | --dangerously-bypass-approvals-and-sandbox |
Warning: Only use in trusted automation environments.
How do I check server status?
# Status of default server
cyberian status
# Specific port
cyberian status --port 4000
# List all servers
cyberian list-servers
Messages
How do I send a message?
# Fire and forget (async)
cyberian message "Do something"
# Wait for response (sync)
cyberian message "Do something" --sync
# With timeout
cyberian message "Do something" --sync --timeout 120
How do I view conversation history?
# All messages
cyberian messages
# Last N messages
cyberian messages --last 5
# Different formats
cyberian messages --format yaml
cyberian messages --format json
cyberian messages --format csv
What message formats are supported?
json(default): JSON arrayyaml: YAML listcsv: Comma-separated valuestext: Plain text
Troubleshooting
Why does my task never complete?
The agent must output COMPLETION_STATUS: COMPLETE. Ensure your instructions include this marker:
instructions: |
Do your task.
When done, output:
COMPLETION_STATUS: COMPLETE
Why is Codex ignoring my first message?
Codex may show a startup banner in fresh directories. Solutions:
- Use
--skip-permissionsto bypass approval prompts - Use a trusted directory (not /tmp)
- Configure config.toml with
approval_policy = "never"
See Codex Integration Guide for details.
Why do I get connection errors?
- Check server is running:
cyberian list-servers - Verify port:
cyberian status --port <port> - Wait for startup: servers need a few seconds to initialize
How do I debug workflows?
-
Add verbose instructions:
instructions: | Debug: listing directory ls -la COMPLETION_STATUS: COMPLETE -
Check conversation history:
cyberian messages --last 10 -
Monitor status:
watch -n 2 cyberian status
See Troubleshooting Guide for more solutions.
Performance
How can I speed up workflows?
-
Use fire-and-forget for independent tasks:
cyberian message "Task 1" & cyberian message "Task 2" & wait -
Use farm mode for parallel execution:
servers: - name: worker1 - name: worker2 -
Reduce polling interval (advanced):
cyberian run workflow.yaml --poll-interval 1.0
How much memory do agents use?
Varies by agent and task complexity. Monitor with:
# Watch memory usage
watch -n 5 "cyberian list-servers | head -1 && ps aux | grep agentapi"
Security
Is it safe to use --skip-permissions?
Only in trusted environments where:
- The agent is running in an isolated container/VM
- The workspace contains no sensitive data
- The workflow is from a trusted source
How do I limit agent capabilities?
-
Use workspace isolation:
cyberian server start claude --dir /tmp/sandbox -
Don't use --skip-permissions in untrusted contexts
-
For Codex: Configure
sandbox_modein config.toml:sandbox_mode = "workspace-write" # or "read-only"
Can agents access the internet?
Depends on agent and configuration:
- Claude Code: Yes, by default
- Codex: Configurable via
sandbox_mode
Integration
Can I use cyberian with CI/CD?
Yes. Example GitHub Actions workflow:
- name: Run cyberian workflow
run: |
cyberian server start claude --skip-permissions &
sleep 5
cyberian run workflow.yaml --param input="$INPUT"
cyberian stop --port 3284
Can I call cyberian from Python?
Not directly as a library (yet), but you can:
-
Use subprocess:
import subprocess result = subprocess.run(["cyberian", "status"], capture_output=True) -
Use the agentapi HTTP API directly
Does cyberian support webhooks/callbacks?
Not currently. For notifications, see NOTIFY_FEATURE.md.
Getting Help
Where can I report bugs?
Open an issue at https://github.com/monarch-initiative/cyberian/issues
Include:
- cyberian version (cyberian --version)
- Command run
- Error message
- Relevant workflow YAML
Where can I ask questions?
- GitHub Discussions
- GitHub Issues (for bugs)
How do I contribute?
See Contributing Guide.
See Also
- Troubleshooting - Detailed problem solutions
- CLI Commands Reference - All commands
- Workflow Schema - YAML format
- Codex Integration - Codex-specific guide