Quickstart
Get from zero to a live service in under 5 minutes.
Prerequisites
curlinstalled (any version)- A domain name (optional — only needed for Step 4)
Step 1 — Get Your API Token
Go to computeportal.io/start and complete the order wizard:
- Pick your compute resources (first two screens)
- Sign in or create an account
- Pay by card or crypto
- Choose CLI based deployment at the Provision screen
After checkout, your API token is waiting at
computeportal.io/user/deploy under Deploy Compute → API Key.Copy the token — you'll use it in Step 3 below to authenticate
cpctl.You can re-issue the token at any time from the same page by clicking Re-issue Key
(note: re-issuing immediately invalidates the previous token).
Step 2 — Install the CLI
bash
curl -fsSL https://install.computeportal.io | shThis installs cpctl to /usr/local/bin. Verify:
bash
cpctl versionStep 3 — Log In and Deploy
bash
# Log in with your token
cpctl login --token cp_live_your_token_hereThen deploy — pick whichever fits your workflow:
From a Docker image:
bash
cpctl deploy --image nginx:latest --name my-appFrom a GitHub repo (CP builds the image for you):
bash
cpctl deploy --repo https://github.com/your-org/your-app --name my-appYour repo must contain a Dockerfile at the root. CP clones it, builds the image internally, and deploys — no Docker Hub account needed.
Your service is live at https://my-app.cpctl.app.
Step 4 — Attach a Custom Domain (optional)
bash
cpctl domain add my-app dashboard.example.comBefore running this, add a CNAME record at your DNS provider:
| Field | Value |
|---|---|
| Name | dashboard |
| Type | CNAME |
| Target | cpctl.app |
| Proxy | DNS only (disable Cloudflare orange-cloud) |
Verify DNS is live first:
bash
dig CNAME dashboard.example.com +short
# should print: cpctl.app.Step 5 (Optional) — Connect an AI Assistant via MCP
If you use Claude Desktop, Cursor, or another MCP-compatible assistant, you have two options.
Option A — Local stdio via cpctl mcp serve (recommended; keeps your token on your machine, out of any shared config):
json
{
"mcpServers": {
"computeportal": {
"command": "cpctl",
"args": ["mcp", "serve"]
}
}
}cpctl mcp serve reads your token from the OS keyring (set by cpctl login) and execs the cp-mcp binary over stdio. Install it once with npm install -g @computeportal/cp-mcp.
Option B — Hosted HTTP endpoint:
json
{
"mcpServers": {
"computeportal": {
"url": "https://mcp.computeportal.io/mcp",
"headers": {
"Authorization": "Bearer cp_live_your_token_here"
}
}
}
}The server is a stateless Bearer forwarder — it carries no credential of its own and requires Authorization: Bearer <cp_live_...> on every request.
Restart your assistant, then try:
"List all my CP services"
"Attach staging.example.com to my ml-inference service"
"Show me the last 50 log lines from my-app"
Destructive tools (cp_destroy, cp_sandbox_destroy, cp_domain_remove) require a dry_run: true call first to obtain a single-use confirm_token — see the full MCP Server Reference for all 23 tools.
Troubleshooting
Token not working
bash
cpctl whoami # should show your emailIf you see not logged in, re-run cpctl login --token <token>. You can view or re-issue your token at computeportal.io/user/deploy under Deploy Compute → API Key.
CNAME not configured (domain add fails)
Your DNS record isn't visible yet. Options:
- Wait 1–5 minutes and retry
- Verify with
dig CNAME dashboard.example.com +short - Bypass the check:
cpctl domain add my-app dashboard.example.com --skip-dns
Service not found
bash
cpctl list # shows all your servicesQuick Reference
bash
cpctl login --token <token> # authenticate
cpctl list # list services
cpctl deploy --image <img> --name <n> # deploy from image
cpctl deploy --repo https://github.com/org/repo # deploy from repo
cpctl logs <service> # tail logs
cpctl stop <service> # stop
cpctl start <service> # start
cpctl delete <service> # delete
cpctl domain add <svc> <hostname> # add custom domain
cpctl domain list <service> # list domains
cpctl whoami # show current userNext Steps
- CLI Reference — all 100+ cpctl commands
- API Reference — full REST API docs
- MCP Server — AI assistant integration
- Custom Domain Guide — how domain routing works
