Host on Newnadoon cloud
Deploy your agent project onto Newnadoon infrastructure so it gets a public URL for the API and MCP — without running your own cluster. Images are stored in the Newnadoon Container Registry and run on Newnadoon-hosted compute.
Requires @newnadoon/ai-framework 1.0.31+ (deploy CLI) and a Portal org subscribed to Newnadoon Agents (or Container Registries).
What you get
After a successful deploy you receive:
| Surface | Example |
|---|---|
| App / landing | https://my-agent.newnadoon.app |
| API | https://my-agent.newnadoon.app/api |
| MCP | https://my-agent.newnadoon.app/api/mcp |
Manage deployments, logs, and keys in Portal → Newnadoon Agents.
The default landing page shows Live status and copy-paste MCP client configs (Cursor, Claude, Codex, Copilot, Gemini, Grok). Generic agents do not require an API key on MCP unless you set MCP_REQUIRE_API_KEY=true yourself. Add public/index.html in your project to replace the default page.
Prerequisites
- A scaffolded agent project (
npm create newnadoon@latest) that runs locally withnpx newnadoon-api. - Docker Desktop (or Docker Engine) running on your machine.
- Portal organization with an active Newnadoon Agents subscription (portal.newnadoon.com → Services).
- An org API key with scope
write:deploy(ndpub_…) from Portal → API Keys (or the Agents page).
Project files the cloud build expects:
Dockerfile.user(from the scaffold)package-lock.json.npmrcwith@newnadoon:registry=https://npm.newnadoon.com/
1. Set your deploy key
In the project .env (or environment):
NEWNADOON_API_KEY=ndpub_…That is enough. The CLI calls Portal GET /api/public-apis/registry/deploy-context and resolves your Newnadoon Container Registry project and push credentials for you.
Optional override if you are targeting a non-production Portal:
NEWNADOON_PORTAL_URL=https://portal.newnadoon.com2. Deploy
From the project root (with Docker running):
$ npx newnadoon deploy --name my-agent --tag latestWhat this does:
- Resolves Newnadoon Container Registry credentials from your API key.
- Builds
Dockerfile.userand tags the image for your org’s registry project. - Pushes the image to
registry.newnadoon.io(Newnadoon Container Registry). - Creates the app on Newnadoon Agents via Portal.
- Prints App, API, and MCP URLs.
--name is the short app / image name (becomes {name}.newnadoon.app). Default container port is 8080 (newnadoon-api). Override with --port if needed.
Alias:
$ npx newnadoon-deploy --name my-agentStep-only commands (same auth):
npx newnadoon deploy build --name my-agent
npx newnadoon deploy push --name my-agent
npx newnadoon deploy apply --name my-agent
npx newnadoon deploy status --name my-agent3. Connect an MCP client
Open the App URL in a browser. You should see API is running / Live.
Copy the Cursor (or other) config from the page. Example:
{
"mcpServers": {
"newnadoon": {
"url": "https://my-agent.newnadoon.app/api/mcp"
}
}
}Save as .cursor/mcp.json (or use Cursor Settings → MCP), then reload MCP.
Stdio-only clients can bridge with:
$ npx -y mcp-remote https://my-agent.newnadoon.app/api/mcp4. Update an existing deployment
After you change code or bump @newnadoon/ai-framework, rebuild and roll out in place:
$ npx newnadoon deploy --name my-agent --tag latest --rollout--rollout updates the existing Newnadoon Agents deployment in place so a new revision starts and pulls the current image for that tag (important when reusing latest).
Confirm in Portal → Newnadoon Agents that the deployment is healthy, or check that the landing page / MCP reflects your changes.
Troubleshooting
| Symptom | What to check |
|---|---|
deploy-context 404 | Portal needs the public deploy-context API; use production Portal or upgrade your Portal deploy. |
Docker build fails on @newnadoon/* | Ensure .npmrc is in the project and copied by Dockerfile.user. |
| Push / auth errors | Key must include write:deploy; org must have Agents (or Registries) active. |
Landing still shows old content after --rollout | Wait a minute and refresh; confirm the Agents page shows a healthy deployment. Re-run deploy if the landing is still stale. |
| MCP rejects without a key | You (or a product image) set MCP_REQUIRE_API_KEY=true. Default framework agents leave this unset. |