Skip to content
Interactive Runtime

Test the live runtime.

The assistant embedded here is Flow Support, an AiFlow agent whose knowledge index is AiFlow's own technical manual. It is embedded using the exact same script snippet customers ship to production.

A worked example

The live widget is active in your browser.

Flow Support is strictly instructed to adhere to documented specs and refuse hallucinated pricing commitments. Safe, deterministic execution in practice.
Flow Support
Recording

Replaying a real conversation.

The widget is docked in the lower corner

Open it and type, or click the mic to switch to full-duplex WebRTC audio and interrupt the agent mid-sentence.

  • Instant WebRTC voice or text with seamless mid-session switching
  • Sub-second interruptibility with instantaneous audio playback halt
  • Camera and screen sharing frame analysis via Gemini multimodal streaming
  • Deterministic knowledge grounding from your own uploaded documents
  • Strict domain and CORS origin restriction enforcement
Client HTML Embed
<script
  src="https://agents.yourdomain.com/widget/aiflow-widget.js"
  data-agent="flow-support"
  data-api-base="https://agents.yourdomain.com"
></script>
Operating it

There is no command line tool to install.

Administration runs through Docker Compose, the operational scripts inside the backend container, and the same REST API the dashboard uses. Nothing extra to install, and nothing to keep in step with the deployment.

Install it

One command provisions Docker, generates a secret, obtains a certificate, creates the first admin, and prints the widget snippet. Run it with --env-help instead of the rest of the flags to see every variable that can go in .env first.


  curl -fsSL https://meridflow.com/downloads/install-aiflow.sh | \
  sudo bash -s -- \
  --version 8.2.0 \
  --option caddy \
  --license-tier pro \
  --license-key AIFLOW1.K1.... \
  --api-domain api.yourcompany.com \
  --admin-domain admin.yourcompany.com \
  --admin-email you@example.com \
  --install-docker

Operate it

The operational scripts run inside the backend container. There is no separate command line tool to install or keep in step with the deployment.


  
# Docker Compose (the first admin is always created as Owner, the most
# privileged role; see the documentation for adding
# others with a specific role once this one can log in).


docker compose exec backend \
python -m scripts.create_admin owner@example.com 'a-strong-password'

Create an agent

Everything in the dashboard is also in the API. Authenticate once, then configure agents, knowledge, and tools programmatically.

curl -X POST https://agents.example.com/api/v1/agents \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  -d '{
    "slug": "support-bot",
    "name": "Support Bot",
    "voice_name": "Kore",
    "base_system_prompt": "You are a support agent for Acme.",
    "greeting_instruction": "Greet the caller and ask how you can help."
  }'

Make it call someone

Post an event from any system that speaks HTTP. Conditions you configure decide whether it becomes a call, a message, or a silent task.

curl -X POST https://agents.example.com/api/v1/agents/1/events \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $EVENTS_KEY" \
  -d '{
    "event_type": "cart_abandoned",
    "payload": {
      "phone": "+15555550123",
      "cart_value": 240.00,
      "items": 3
    }
  }'

# => 201 {"event_id": 42, "matched": true, "call_ids": [17]}

Put it on your site

One script tag. It mounts into a shadow root, so your page styles cannot reach into it and its styles cannot escape.

HTML

  
<script
  src="https://agents.example.com/widget/aiflow-widget.js"
  data-agent="support-bot"
  data-api-base="https://agents.example.com"
  data-position="bottom-right"
></script>

Connect it to your other tools

AiFlow is an MCP server as well as a client, so a client such as Claude Desktop can place a call, search a knowledge base, or read back a transcript. Note the trailing slash.

{
  "mcpServers": {
    "aiflow": {
      "url": "https://agents.example.com/api/v1/mcp/",
      "headers": {
        "Authorization": "Bearer $AIFLOW_API_KEY"
      }
    }
  }
}

Let another deployment delegate to this one

Register the remote instance as a parent, child, or peer. Delegation carries a hop count and a trace across the boundary, so a loop is refused rather than forwarded. Enterprise only.

Register a link
# The remote base URL is validated before it is ever called.
# Binding an api_key_id restricts inbound federated work to that key.

curl -X POST https://agents.example.com/api/v1/federation-links \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Retail brand",
    "relationship": "child",
    "base_url": "https://agents.retail.example.com",
    "enabled": true
  }'
Run it yourself

The free demo runs locally in minutes.

Demo mode is free, does not expire, and needs nothing but a Gemini key. The 14 day trial unlocks every capability and the full concurrency of a paid plan, with no card.