Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.automagik.dev/llms.txt

Use this file to discover all available pages before exploring further.

Provider Commands

The omni providers command group manages AI and agent provider connections. Providers define how Omni routes messages to AI backends — each provider has a schema type, connection config, and optional agent resources.

Provider Schemas

SchemaDescription
agnoAgno platform — agents, teams, workflows
webhookGeneric webhook — POST events to any URL
openclawOpenClaw gateway via WebSocket
ag-uiAG-UI protocol
claude-codeClaude Code CLI as agent backend
a2aAgent-to-agent protocol
genieGenie team inbox integration (alias)
nats-genieGenie via NATS — canonical name; required for new providers using the NATS transport

omni providers list

List all providers.
omni providers list [options]
OptionDescription
--activeShow only active providers
omni providers list
omni providers list --active

omni providers get

Get full details of a provider.
omni providers get <id>

omni providers create

Create a new provider.
omni providers create [options]

Common Options

OptionDescription
--name <name>Provider name (unique)
--schema <schema>Provider schema (see table above)
--base-url <url>API base URL (ws:// or wss:// for OpenClaw)
--api-key <key>API key
--description <desc>Provider description
--timeout <seconds>Default timeout in seconds (default: 60)
--streamEnable streaming by default

Claude Code Options

OptionDescription
--project-path <path>Project directory path (required)
--max-turns <number>Max conversation turns
--permission-mode <mode>default, acceptEdits, bypassPermissions, plan
--model <model>Model override
--system-prompt <prompt>System prompt prepended to agent

Genie Options

OptionDescription
--agent-name <name>Agent identity / “from” field (required)
--target-agent <name>Target agent inbox to deliver to (required)
--team-name <template>Team name template — supports {chat_id}, {thread_id}, {sender_id} (default: omni-{chat_id})

OpenClaw Options

OptionDescription
--default-agent-id <id>Default agent ID (required)

Examples

# Create a webhook provider
omni providers create \
  --name "my-webhook" \
  --schema webhook \
  --base-url https://example.com/api/hook

# Create a Claude Code provider
omni providers create \
  --name "code-agent" \
  --schema claude-code \
  --project-path /home/user/my-project \
  --permission-mode acceptEdits \
  --model sonnet

# Create a Genie provider
omni providers create \
  --name "genie-sofia" \
  --schema genie \
  --agent-name sofia \
  --target-agent team-lead \
  --team-name "omni-{chat_id}"

# Create an Agno provider
omni providers create \
  --name "agno-prod" \
  --schema agno \
  --base-url https://api.agno.com \
  --api-key <key> \
  --stream

omni providers update

Update a provider’s configuration.
omni providers update <id> [options]
OptionDescription
--name <name>New name
--base-url <url>New base URL
--api-key <key>New API key
--description <desc>New description
--timeout <seconds>New timeout
--stream / --no-streamEnable or disable streaming
--active / --no-activeActivate or deactivate
--schema-config <json>Raw schemaConfig as JSON (overrides individual flags)
Schema-specific options (--project-path, --agent-name, --target-agent, etc.) are also available on update.
# Deactivate a provider
omni providers update <id> --no-active

# Change model for Claude Code provider
omni providers update <id> --model opus

# Update raw schema config
omni providers update <id> --schema-config '{"maxTurns": 20}'

omni providers delete

Delete a provider.
omni providers delete <id> [options]
OptionDescription
--forceSkip confirmation

omni providers test

Test a provider’s health and connectivity.
omni providers test <id>
omni providers test <id>
# Output: ✓ Provider "my-webhook" is healthy

omni providers setup

Interactive setup wizards that guide you through creating a provider with all required configuration.

omni providers setup openclaw

Set up an OpenClaw provider — generates keypairs, pairs the device, and creates the provider.
omni providers setup openclaw [options]
OptionDescription
--gateway-url <url>Gateway WebSocket URL
--gateway-token <token>Gateway authentication token
--agent-id <id>Default agent ID
--name <name>Provider name (default: openclaw-<agent-id>)
--instance-id <uuid>Omni instance UUID for the channel account
--account-name <name>Account name in openclaw.json
--plugin-path <path>Path to omni.ts plugin entry (auto-detected)
--skip-openclaw-configSkip openclaw.json updates
--non-interactiveError on missing flags instead of prompting

omni providers setup genie

Set up a Genie provider — configures Claude Code team inbox integration.
omni providers setup genie [options]
OptionDescription
--agent-name <name>Agent identity / “from” field
--target-agent <name>Target agent inbox
--team-name <template>Team name template
--agent-role <role>Registered genie dir agent name (default: team-lead)
--name <name>Provider name (default: genie-<agent-name>)
--base-url <url>Base URL
--instance-id <uuid>Omni instance UUID to auto-assign
--non-interactiveError on missing flags instead of prompting

Agno Resource Listing

For Agno providers, you can list remote resources:
# List agents registered with an Agno provider
omni providers agents <id>

# List teams
omni providers teams <id>

# List workflows
omni providers workflows <id>

Handoff payload (Gupshup)

When a Gupshup provider triggers a human handoff via POST /v2/messages/handoff, the request body now uses structured fields. The legacy extra_info is still accepted but new integrations should send dadosLead and motivoHandoff.
FieldTypeRequiredDescription
instanceIduuidyesGupshup instance ID
chatIdstringyesChat ID to pause the agent on
tostringyesRecipient phone number
textstringyesMessage text shown to the end user
dadosLeadstringnoFree-text lead-data summary for the human attendant
motivoHandoffstringnoHandoff trigger and notes (e.g. "Gatilho: sinalizou close ||| Obs: ...")
extraInfostringnoLegacy — prefer dadosLead. Still accepted as a fallback.
handoffFieldsobjectnoStructured fields for Gupshup flow variables (e.g. nome, cidade, temperatura_lead)
curl -X POST https://omni.example.com/v2/messages/handoff \
  -H "Authorization: Bearer $OMNI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceId": "0c6f8...",
    "chatId": "5511...",
    "to": "+5511999999999",
    "text": "Um atendente humano vai continuar de onde a IA parou.",
    "dadosLead": "Cliente perguntou sobre desconto em planos enterprise",
    "motivoHandoff": "Gatilho: pediu humano ||| Obs: lead quente",
    "handoffFields": { "nome": "Maria", "cidade": "Curitiba", "temperatura_lead": "quente" }
  }'
If both dadosLead and extraInfo are sent, dadosLead wins; the legacy field is silently ignored. motivoHandoff is appended to the Gupshup notification only when present.
The handoffFields object maps directly onto Gupshup template variables. Keys you don’t define in your Gupshup flow are dropped server-side.