Skip to main content
This guide walks you through registering an agent, installing it on your server, and deploying a Frame to it.

1. Register an agent

The easiest way is from the dashboard. Open the account menu, go to Settings, scroll to the Agents section, and click Connect agent. Give your server a name. There’s also an optional Base domain field: setting it pre-fills the --domain flag in the generated install command. Nubo then reveals a single install command with the token already embedded: copy it and run it on your server.
The install command is shown exactly once, because only its hash is stored. If you lose it, register a new agent.
Prefer the API?
curl -X POST https://shuttle.withnubo.com/v2/agents/register \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "my-server"}'
You’ll get back:
{
  "id": "69e18178760b571bf8c4c5f1",
  "name": "my-server",
  "token": "agt_xK9mR2..."
}

2. Install the agent

Run the installer on your server:
curl -fsSL https://dl.withnubo.com/nubo-agent/install.sh | bash
The installer will prompt you for your token, domain, and other settings. Or pass everything directly:
curl -fsSL https://dl.withnubo.com/nubo-agent/install.sh | bash -s -- \
  --token agt_xK9mR2... \
  --domain frames.example.com
This installs the agent along with the tools it needs to build and serve your apps, and sets it up as a background service that starts automatically.

3. Set up DNS

Point a wildcard DNS record at your server so each Frame gets its own subdomain:
*.frames.example.com → your-server-ip
If you’re using Cloudflare, create an A record for *.frames pointing to your server’s IP.

4. Deploy a Frame

In the dashboard, click New Frame. After picking your repo, you’ll see a Target picker (Nubo Cloud plus a pill per connected agent): choose your agent instead of Nubo Cloud. Prefer the API? Pass the agent’s ID when you create the Frame:
curl -X POST https://shuttle.withnubo.com/v2/projects/<project_id>/spaces/<space_id>/frames \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-app",
    "owner_id": "<your-user-id>",
    "git_repository": "my-repo",
    "git_repository_owner": "my-github-user",
    "port": 3000,
    "agent_id": "69e18178760b571bf8c4c5f1"
  }'
The agent will build your app and start it up. You can follow the build logs live from the Nubo dashboard. Once the build finishes, your Frame will be available at <frame-id>.frames.example.com.

Next steps

Custom domains

Serve your Frame under a hostname of your choice

Advanced configuration

Customize the agent’s behavior, manage services, and troubleshoot