{
  "manifest_version": "1",
  "slug": "omnara",
  "title": "Omnara",
  "headline": "Self-host Omnara",
  "description": "Run Omnara, the open-source managed agent platform, on one exe.dev VM: its whole Docker Compose stack, models from exe.dev's LLM gateway, no API keys.",
  "category": "ai-agents",
  "tags": [
    "omnara",
    "managed agents",
    "agent platform",
    "self-hosted agents",
    "claude managed agents alternative",
    "openai agents api alternative",
    "omnarad",
    "docker compose"
  ],
  "url": "https://exe.dev/deploy/omnara",
  "markdown_url": "https://exe.dev/deploy/omnara.md",
  "upstream": {
    "website": "https://omnara.com",
    "source": "https://github.com/omnara-ai/omnara",
    "docs": "https://docs.omnara.com/self-hosting/deployment",
    "license": "Apache-2.0"
  },
  "example_vm_name": "my-omnara",
  "time": "15 minutes",
  "stack": [
    {
      "name": "Omnara 0.2.15",
      "detail": "API, worker, maintenance, web app, and nginx gateway, from Omnara's images in Docker Compose",
      "port": 8000
    },
    {
      "name": "PostgreSQL, Valkey, RustFS",
      "detail": "Agent event logs, queues, and artifacts, on the Compose network only",
      "data": "Docker volumes omnara_postgres18-data, omnara_rustfs-data, omnara_memory-data"
    },
    {
      "name": "LLM relay",
      "detail": "nginx next to the API and worker, forwarding to exe.dev's LLM gateway"
    },
    {
      "name": "Mail bridge",
      "detail": "exe-mail.py next to the API, sending Omnara's email through exe.dev"
    },
    {
      "name": "omnarad",
      "detail": "Omnara's machine daemon, running agents' commands as the user omnara-agent",
      "data": "/home/omnara-agent"
    }
  ],
  "access": [
    {
      "url": "https://my-omnara.exe.xyz/",
      "who": "private",
      "what": "Omnara's dashboard and API, behind exe.dev login, then Omnara's own"
    },
    {
      "url": "https://my-omnara.exe.xyz/",
      "who": "shared",
      "what": "Teammates you share the VM with, each with their own Omnara account"
    }
  ],
  "delivers": [
    "Omnara 0.2.15's whole Compose stack at your VM's private URL, started at boot by omnara.service",
    "A relay to exe.dev's LLM gateway that lists its models, so agents need no model API key on the VM",
    "Signup, password reset, and invitation emails sent through exe.dev, with no mail account",
    "A user, omnara-agent, ready to be your agents' machine, without sudo and cut off from the stack's databases",
    "Omnara's encryption keys in ~/omnara/.env, mode 600",
    "Nightly backups of the database, artifacts, and memory, with the first one taken and checked"
  ],
  "owner_runs_after": [
    "ssh exe.dev share add my-omnara teammate@example.com"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Omnara%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fomnara.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-omnara.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-omnara.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20Omnara%200.2.15%27s%20whole%20Compose%20stack%20at%20your%20VM%27s%20private%20URL%2C%20started%20at%20boot%20by%20omnara.service%0A-%20A%20relay%20to%20exe.dev%27s%20LLM%20gateway%20that%20lists%20its%20models%2C%20so%20agents%20need%20no%20model%20API%20key%20on%20the%20VM%0A-%20Signup%2C%20password%20reset%2C%20and%20invitation%20emails%20sent%20through%20exe.dev%2C%20with%20no%20mail%20account%0A-%20A%20user%2C%20omnara-agent%2C%20ready%20to%20be%20your%20agents%27%20machine%2C%20without%20sudo%20and%20cut%20off%20from%20the%20stack%27s%20databases%0A-%20Omnara%27s%20encryption%20keys%20in%20~%2Fomnara%2F.env%2C%20mode%20600%0A-%20Nightly%20backups%20of%20the%20database%2C%20artifacts%2C%20and%20memory%2C%20with%20the%20first%20one%20taken%20and%20checked%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20Follow%20%22Install%20by%0Ahand%22%20from%20%22On%20the%20VM%22%2C%20skipping%20VM%20creation%20and%20SSH%3A%20Docker%2C%20Omnara%2C%0A.env%2C%20the%20stack%2C%20omnara.service%2C%20the%20omnara-agent%20user%2C%20and%20backups.%0AWork%20as%20exedev%20in%20~%2Fomnara.%20Never%20overwrite%20an%20existing%20.env%2C%20and%20never%0Aprint%20its%20contents.%20Don%27t%20sign%20up%2C%20create%20organizations%2C%20or%20connect%20a%0Amachine%3A%20the%20owner%20does%20those%20in%20the%20browser%20with%20their%20own%20password%2C%0Aand%20the%20machine%20token%20comes%20from%20their%20dashboard.%20Don%27t%20send%20test%0Aemails.%20Don%27t%20share%20the%20VM%20or%20make%20it%20public.%20Verify%20that%20%2Fhealthz%20says%0Aok%2C%20that%20the%20relay%20lists%20models%2C%20and%20that%20api-mail%27s%20log%20says%20it%20is%0Alistening%2C%20then%20point%20the%20owner%20to%20%22Sign%20up%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open%20and%20these%20commands%2C%20which%20only%20I%20can%20run%2C%20from%20my%20own%20computer%20%28with%20this%20VM%27s%20name%20in%20them%29%3A%0A%20%20ssh%20exe.dev%20share%20add%20my-omnara%20teammate%40example.com%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/omnara/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Omnara on this VM by following the exe.dev recipe at https://exe.dev/deploy/omnara.md from top to bottom.\n\nThe recipe's example VM name is my-omnara. This VM's name is the output of `hostname`: use it wherever the recipe writes my-omnara. Skip the step that creates the VM; you are on it.\n\nYou are done when all of these are true. Check each one yourself:\n- Omnara 0.2.15's whole Compose stack at your VM's private URL, started at boot by omnara.service\n- A relay to exe.dev's LLM gateway that lists its models, so agents need no model API key on the VM\n- Signup, password reset, and invitation emails sent through exe.dev, with no mail account\n- A user, omnara-agent, ready to be your agents' machine, without sudo and cut off from the stack's databases\n- Omnara's encryption keys in ~/omnara/.env, mode 600\n- Nightly backups of the database, artifacts, and memory, with the first one taken and checked\n\nRead the whole recipe, including the closed details. Follow \"Install by\nhand\" from \"On the VM\", skipping VM creation and SSH: Docker, Omnara,\n.env, the stack, omnara.service, the omnara-agent user, and backups.\nWork as exedev in ~/omnara. Never overwrite an existing .env, and never\nprint its contents. Don't sign up, create organizations, or connect a\nmachine: the owner does those in the browser with their own password,\nand the machine token comes from their dashboard. Don't send test\nemails. Don't share the VM or make it public. Verify that /healthz says\nok, that the relay lists models, and that api-mail's log says it is\nlistening, then point the owner to \"Sign up\".\n\nFinish with the URLs I should open and these commands, which only I can run, from my own computer (with this VM's name in them):\n  ssh exe.dev share add my-omnara teammate@example.com\n",
    "prompt_url": "https://exe.dev/deploy/omnara/prompt.txt"
  },
  "updated": "2026-10-31",
  "verified": "2026-10-31",
  "related": [
    "claude-managed-agents",
    "openai-agents-sdk",
    "agents",
    "docker-compose",
    "open-webui",
    "claude-code"
  ],
  "alternatives": [
    "Claude Managed Agents",
    "OpenAI Agents API"
  ],
  "files": [
    "https://exe.dev/deploy/omnara/backup.sh",
    "https://exe.dev/deploy/omnara/compose.exe.yaml",
    "https://exe.dev/deploy/omnara/exe-mail.py"
  ]
}
