Agent runtimes
Self-hosted agent runtimes — Muse/Dots-style personal agents, chat-ops bots, terminal clients — all let you bring your own OpenAI-compatible endpoint. LivePair covers two of the wires they speak:
Base URL: https://livepairai.com/v1/agent
API key: lp_… (Authorization: Bearer — or x-api-key)
Models: GET /v1/agent/models (maker-prefixed ids, e.g. deepseek/deepseek-v4.1-flash)
Chat completions work on every runtime below. Image generation works wherever
the runtime calls POST …/images/generations. None of these runtimes speak
the /videos job shape yet, so video stays a direct-API feature.
nanoMuse
nanoMuse works signed-out with your own key — chat, memory, the hands, and picture/clip tools all run on your providers.
App: Settings → Account → Any OpenAI-compatible endpoint → Add an
endpoint → base https://livepairai.com/v1/agent, key lp_…, pick models
from the fetched list.
config.toml:
[llm]
model = "deepseek/deepseek-v4.1-flash"
base_url = "https://livepairai.com/v1/agent"
api_key = "${LIVEPAIR_API_KEY}"
A provider = "livepair" catalogue preset (chat + image defaults) is in
review upstream — nano-muse/nanoMuse#457.
Until it merges, the custom-endpoint form above is equivalent.
OpenDots
OpenDots picks an openai_compatible profile per agent. LivePair's chat
surface does not implement response_format, so declare
structured_output: "json_object" — the schema rides in the prompt and the
runtime still validates output locally:
{"id": "livepair", "kind": "openai_compatible",
"model": "deepseek/deepseek-v4.1-flash",
"base_url": "https://livepairai.com/v1/agent",
"api_key_env": "LIVEPAIR_API_KEY",
"structured_output": "json_object"}
aichat
config.yaml client entry:
clients:
- type: openai-compatible
name: livepair
api_base: https://livepairai.com/v1/agent
api_key: xxx # lp_ key
Then aichat -m livepair:deepseek/deepseek-v4.1-flash.
ChatGPT-Telegram-Workers
The plugin system takes a JSON call spec. This one maps a bot command to
LivePair image generation — save as plugins/livepair.json:
{
"url": "https://livepairai.com/v1/agent/images/generations",
"method": "POST",
"headers": {
"Authorization": "Bearer {{ENV.LIVEPAIR_API_KEY}}",
"Content-Type": "application/json"
},
"input": { "type": "text", "required": true },
"body": {
"type": "json",
"content": {
"model": "{{ENV.LIVEPAIR_MODEL}}",
"prompt": "{{DATA}}",
"response_format": "url"
}
},
"response": {
"content": {
"input_type": "json",
"output_type": "image",
"output": "{{#each item in data}}{{item.url}}{{/each}}"
},
"error": {
"input_type": "json",
"output_type": "text",
"output": "Error: {{error.message}}"
}
}
}
Set LIVEPAIR_API_KEY and LIVEPAIR_MODEL (a t2i catalog id) in the
worker's env.
chatGPT-discord-bot
Two backends — compatible for chat, openai for the image path:
[backends.livepair-chat]
kind = "compatible"
base_url = "https://livepairai.com/v1/agent"
api_key_env = "LIVEPAIR_API_KEY"
[models.livepair-chat]
backend = "livepair-chat"
model = "deepseek/deepseek-v3.2"
capabilities = ["chat"]
parameters = { max_output_tokens = 2048 }
[backends.livepair-image]
kind = "openai"
base_url = "https://livepairai.com/v1/agent"
api_key_env = "LIVEPAIR_API_KEY"
[models.livepair-image]
backend = "livepair-image"
model = "seedream-5.0"
capabilities = ["text-to-image"]
parameters = { size = "1024x1024" }
Only those two wires are mapped — Responses sessions, images/edits, and
video are not part of that server's provider model.
Keyless option
Every example above uses an lp_ key. Agents that can sign x402 payments can
skip the key entirely — POST /v1/agent/* accepts per-call USDC on Base.
See MCP & agent payments.