{
  "manifest_version": "1",
  "slug": "nod",
  "title": "Nod",
  "headline": "Self-host Nod, n8n's personal agent, on a server that stays on",
  "description": "Run Nod's server on an exe.dev VM: n8n's personal agent with its own browser and workspace, behind your exe.dev login, with GPT through exe.dev.",
  "category": "ai-agents",
  "tags": [
    "nod",
    "n8n nod",
    "n8n labs",
    "personal agent",
    "ai assistant",
    "self-hosted",
    "telegram",
    "whatsapp",
    "pi agent"
  ],
  "url": "https://exe.dev/deploy/nod",
  "markdown_url": "https://exe-staging.dev/deploy/nod.md",
  "upstream": {
    "website": "https://nod.n8n.io",
    "source": "https://github.com/n8n-io/nod",
    "docs": "https://nod.n8n.io/docs/deploy/self-host/",
    "license": "Apache-2.0"
  },
  "example_vm_name": "my-nod",
  "time": "20 minutes",
  "stack": [
    {
      "name": "Nod server",
      "detail": "built from the nod-v0.7.5 source in Docker Compose; restarts with Docker",
      "port": 8000,
      "data": "~/nod/deployment/self-host/.env and the server-data volume"
    },
    {
      "name": "PostgreSQL 17",
      "detail": "postgres:17-alpine, private to the stack",
      "data": "postgres-data volume"
    },
    {
      "name": "Workspace",
      "detail": "Nod's Linux sandbox container, behind its own firewall container",
      "data": "workspace-data and workspace-tools volumes"
    },
    {
      "name": "Browser",
      "detail": "Chromium in its own container",
      "data": "browser-data volume"
    },
    {
      "name": "Models",
      "detail": "GPT-6.1 Sol and open models through exe.dev's LLM integration"
    }
  ],
  "access": [
    {
      "url": "https://my-nod.exe.xyz/",
      "who": "private",
      "what": "Nod's web app and API, behind your exe.dev login and then Nod's access token"
    }
  ],
  "delivers": [
    "Nod's server, PostgreSQL, browser and workspace containers built from nod-v0.7.5, healthy and set to start again after a reboot",
    "Nod at `https://\u003cvm\u003e.exe.xyz/`, behind your exe.dev login and Nod's own access token",
    "GPT-6.1 Sol through exe.dev's LLM integration as the first model, with no API key on the VM",
    "Nod's workspace and browser checked to be unable to reach exe.dev's integrations",
    "A first backup in `~/backups`"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=Set%20up%20Nod%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fnod.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-nod.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-nod.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AThis%20recipe%20needs%20a%2050GB%20disk%2C%20and%20a%20new%20VM%27s%20may%20be%20smaller.%20Before%20you%20install%20anything%2C%20run%20%60df%20-h%20%2F%60.%20If%20its%20size%20is%20under%2045G%2C%20stop%20and%20ask%20me%20to%20grow%20the%20disk%2C%20either%20with%20this%20link%3A%20https%3A%2F%2Fexe.dev%2Fsuggest%3Fcommand%3Dresize%2520my-nod%2520--disk%253D50GB%20or%2C%20on%20my%20computer%2C%20with%20%60ssh%20exe.dev%20resize%20my-nod%20--disk%3D50GB%60.%20When%20I%20say%20it%27s%20done%2C%20run%20%60sudo%20resize2fs%20%22%24%28findmnt%20-no%20SOURCE%20%2F%29%22%60%2C%20check%20%60df%20-h%20%2F%60%20again%2C%20and%20carry%20on.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20Nod%27s%20server%2C%20PostgreSQL%2C%20browser%20and%20workspace%20containers%20built%20from%20nod-v0.7.5%2C%20healthy%20and%20set%20to%20start%20again%20after%20a%20reboot%0A-%20Nod%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%60%2C%20behind%20your%20exe.dev%20login%20and%20Nod%27s%20own%20access%20token%0A-%20GPT-6.1%20Sol%20through%20exe.dev%27s%20LLM%20integration%20as%20the%20first%20model%2C%20with%20no%20API%20key%20on%20the%20VM%0A-%20Nod%27s%20workspace%20and%20browser%20checked%20to%20be%20unable%20to%20reach%20exe.dev%27s%20integrations%0A-%20A%20first%20backup%20in%20%60~%2Fbackups%60%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20For%20initial%20setup%2C%0Afollow%20%22Install%20by%20hand%22%20first%2C%20skipping%20VM%20creation%20and%20SSH%20but%20doing%0Athe%20disk%20check.%20The%20opening%20walkthrough%20is%20for%20the%20owner.%20Build%20exactly%0Athe%20pinned%20tag.%20The%20build%20takes%20about%2012%20minutes%3A%20run%20it%20in%20tmux%20or%20with%0Aa%20long%20timeout%2C%20and%20don%27t%20interrupt%20it.%20Do%20not%20run%20the%20restore%20or%20update%0Ainstructions%2C%20and%20don%27t%20reboot.%0AKeep%20the%20VM%20private%3A%20never%20run%20share%20set-public%2C%20keep%20NOD_BIND_ADDRESS%0Aat%20127.0.0.1%2C%20and%20don%27t%20remove%20or%20change%20the%20workspace-network%20service.%0AOn%20an%20existing%20VM%2C%20ask%20before%20replacing%20anything%20that%20listens%20on%20port%0A8000.%20Never%20print%20NOD_VAULT_KEY%20or%20NOD_POSTGRES_PASSWORD.%0AVerify%20every%20check%20in%20%22Install%20by%20hand%22%2C%20including%20both%20blocked%0Aintegration%20checks%2C%20then%20take%20the%20first%20backup%20with%20backup.sh.%0AFinish%20by%20giving%20the%20owner%20https%3A%2F%2F%3Cvm%3E.exe.xyz%2F%20and%20the%20value%20of%0ANOD_AUTH_TOKEN%2C%20and%20point%20them%20to%20%22Open%20Nod%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "disk": "50GB",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/nod/prompt.txt | ssh exe.dev new --disk=50GB --prompt=/dev/stdin",
    "prompt": "Set up Nod on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/nod.md from top to bottom.\n\nThe recipe's example VM name is my-nod. This VM's name is the output of `hostname`: use it wherever the recipe writes my-nod. Skip the step that creates the VM; you are on it.\n\nThis recipe needs a 50GB disk, and a new VM's may be smaller. Before you install anything, run `df -h /`. If its size is under 45G, stop and ask me to grow the disk, either with this link: https://exe.dev/suggest?command=resize%20my-nod%20--disk%3D50GB or, on my computer, with `ssh exe.dev resize my-nod --disk=50GB`. When I say it's done, run `sudo resize2fs \"$(findmnt -no SOURCE /)\"`, check `df -h /` again, and carry on.\n\nYou are done when all of these are true. Check each one yourself:\n- Nod's server, PostgreSQL, browser and workspace containers built from nod-v0.7.5, healthy and set to start again after a reboot\n- Nod at `https://\u003cvm\u003e.exe.xyz/`, behind your exe.dev login and Nod's own access token\n- GPT-6.1 Sol through exe.dev's LLM integration as the first model, with no API key on the VM\n- Nod's workspace and browser checked to be unable to reach exe.dev's integrations\n- A first backup in `~/backups`\n\nRead the whole recipe, including the closed details. For initial setup,\nfollow \"Install by hand\" first, skipping VM creation and SSH but doing\nthe disk check. The opening walkthrough is for the owner. Build exactly\nthe pinned tag. The build takes about 12 minutes: run it in tmux or with\na long timeout, and don't interrupt it. Do not run the restore or update\ninstructions, and don't reboot.\nKeep the VM private: never run share set-public, keep NOD_BIND_ADDRESS\nat 127.0.0.1, and don't remove or change the workspace-network service.\nOn an existing VM, ask before replacing anything that listens on port\n8000. Never print NOD_VAULT_KEY or NOD_POSTGRES_PASSWORD.\nVerify every check in \"Install by hand\", including both blocked\nintegration checks, then take the first backup with backup.sh.\nFinish by giving the owner https://\u003cvm\u003e.exe.xyz/ and the value of\nNOD_AUTH_TOKEN, and point them to \"Open Nod\".\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/nod/prompt.txt"
  },
  "updated": "2026-11-13",
  "verified": "2026-11-13",
  "related": [
    "pi",
    "pi-durable",
    "openmausbot",
    "openclaw",
    "hermes-agent",
    "n8n-2"
  ],
  "alternatives": [
    "Mac mini",
    "Hetzner",
    "DigitalOcean",
    "boxd"
  ]
}
