Skip to content

Setup & Deployment

VPS Quick Setup

bash
# Install the latest server release for your platform
curl -fsSL https://openagent.uno/install.sh | sh

# Start with an agent directory (auto-bootstraps network + prints invite)
openagent serve ./my-agent

# Register as OS service
openagent service install ./my-agent

Prefer to grab the archive yourself? Browse releases at https://github.com/openagent-uno/openagent-server/releases.

pip install

bash
pip install 'openagent-framework[all]'
openagent serve ./my-agent

Doctor & Setup

bash
openagent doctor                 # environment report
openagent service install        # register as OS service

With an agent directory:

bash
openagent -d ./my-agent doctor
openagent -d ./my-agent service install

OS Service

OpenAgent registers as a platform-native service. When using agent directories, each agent gets a unique service name derived from the directory name.

Default (single agent)

  • Linux — systemd user unit (~/.config/systemd/user/openagent.service)
  • macOS — launchd plist (~/Library/LaunchAgents/com.openagent.serve.plist)
  • Windows — Task Scheduler entry with restart loop

Per-agent (multi-agent)

  • Linuxopenagent-<dirname>.service
  • macOScom.openagent.<dirname>.plist
  • WindowsOpenAgent-<dirname> task

Optional systemd limits

On Linux, the generated user unit can include extra raw [Service] directives from openagent.yaml. This is the right place to add resource caps such as MemoryHigh, MemoryMax, or MemorySwapMax.

If you omit the section entirely, OpenAgent writes no memory cap lines at all. Setting a key to null or an empty string also omits it.

yaml
service:
  systemd:
    MemoryHigh: 2500M
    MemoryMax: 3500M
    MemorySwapMax: 1G
    TasksMax: 4096

Re-run openagent service install after changing these values so the systemd unit is rewritten and reloaded. On macOS and Windows this section is ignored.

bash
# Linux (default agent)
systemctl --user status openagent
journalctl --user -u openagent -f

# Linux (named agent)
systemctl --user status openagent-my-agent
journalctl --user -u openagent-my-agent -f

# macOS
launchctl list com.openagent.serve       # default
launchctl list com.openagent.my-agent    # named

# Uninstall (any platform)
openagent service uninstall
openagent -d ./my-agent service uninstall       # specific agent

Auto-Update

yaml
auto_update:
  enabled: true
  mode: auto                    # auto | notify | manual
  check_interval: "17 */6 * * *"
  • auto — upgrade + exit 75 (OS service restarts with new code)
  • notify — upgrade + notify, no restart
  • manual — upgrade only

The update mechanism adapts to the installation type:

  • Standalone executable: downloads the latest release from GitHub, verifies checksum, and swaps the binary in place
  • pip install: runs pip install --upgrade openagent-framework

Manual: openagent update

Data Paths

When using openagent serve ./my-agent, all data lives inside the agent directory:

my-agent/
├── openagent.yaml    # configuration
├── openagent.db      # SQLite database
├── memories/         # memory vault
└── logs/             # log files

Without agent directory (legacy)

OpenAgent stores files in platform-standard directories:

PlatformPath
macOS~/Library/Application Support/OpenAgent/
Linux~/.config/openagent/ (config), ~/.local/share/openagent/ (data)
Windows%APPDATA%\OpenAgent\

Override with -c /path/to/openagent.yaml or set paths in config.

Testing

The repository ships with an end-to-end test suite that exercises the full gateway, agent, MCP, and model stack against real API keys. Each test lives in its own module under scripts/tests/:

bash
# Full suite (reads API keys from ~/my-agent/openagent.yaml)
bash scripts/test_openagent.sh

# Run a specific category only
bash scripts/test_openagent.sh --only files,rest,channels

# List all registered tests (category/name) and exit
bash scripts/test_openagent.sh --list

Categories:

CategoryWhat it covers
imports, catalogModule compile + catalog/pricing helpers
channels, formattingPure-unit string utilities (attachment markers, split, Telegram/WhatsApp rendering)
pool, mcpMCP pool lifecycle + per-server tool round-trips
runtime, router, budgetLive LLM calls + SmartRouter tier classification + budget-aware fallback + usage_log rows
gateway, sessionsHTTP server boot + WebSocket message round-trip + session isolation
upload, voice, filesFile/audio upload + voice transcription path + full agent-reads-uploaded-file pipeline through filesystem MCP + [IMAGE:/…] response markers → WS attachments field
config, logs, usage, models, pricing, providers, vault_restREST surface
cron, dream, updaterScheduler roundtrip, dream-mode prompt, updater smoke
bridgesTelegram/Discord/WhatsApp module imports + BaseBridge contract

The suite builds a throwaway agent dir under /tmp/openagent-test-<uuid>/ so it never touches your real my-agent config or database.

Migrating to agent directory

bash
openagent migrate --to ./my-agent

This copies your existing config, database, and memories from platform-standard paths to the new agent directory.

MIT Licensed