VxCloud
Developer Platform · API-first

Build with the VxCloud API & CLI

Everything the dashboard does, you can do from your terminal or your code. Provision VMs and Docker stacks, query the audit log, manage tenant nodes, and stream deployment progress over WebSockets — all through one REST surface and one Go binary called vxcli.

RESTWebSocketWebhooksOpenAPIJWT
~/my-project
bash
$ vxcli auth login -k xc_live_…
✓ token resolved · node = node1.prodxcloud.com

$ vxcli deploy --app my-api --cloud aws \
    --service ec2 --region us-east-1
▸ session adc2d5c4-…  queued
▸ [10%] cloning repo
▸ [40%] terraform apply
▸ [85%] systemd unit started
✓ [100%] my-api live at https://54.183.21.5

120+

REST endpoints

< 50ms

p50 control-plane latency

Go

Single static CLI binary

OpenAPI

Spec-first, machine-readable

Quick start

Five lines from API key to running VM

That's the whole loop. The CLI handles auth, tenant-node resolution, terraform, and SSH provisioning under the hood — or call the same endpoints over REST.

deploy with vxclibash
# 1. Sign in (exchanges API key → JWT, picks your tenant node)
vxcli auth login -u joelwembo -k xc_live_…

# 2. Verify the CLI resolved your node
vxcli node current

# 3. Create a workspace bound to that node
vxcli init my-project && cd my-project

# 4. Preview a deploy without executing
vxcli deploy --app my-api --cloud aws --service ec2 \
  --region us-east-1 --env development --dry-run

# 5. Ship it
vxcli deploy --app my-api --cloud aws --service ec2 \
  --region us-east-1 --env development

How it fits

One API. One CLI. Every plane.

Your API key exchanges for a short-lived JWT, which is honored by both the control plane and the tenant nodes that own your resources. vxcli is just a transport.

  • Scoped keys: xc_live_ (prod), xc_dev_ (dev), xc_test_ (CI).
  • JWTs expire in 15 minutes — vxcli rotates silently, no infinite-token risk if a binary leaks.
  • Tenant nodes addressed by JWT claim, so you can't accidentally hit someone else's control plane.

API key

xc_live_… (long-lived, scoped)

JWT (15-min TTL)

eyJhbGciOi… · auto-rotated

Control plane

api.prodxcloud.com · 120+ endpoints

Tenant node + resources

node1.prodxcloud.com · VMs / Docker / k8s

Beyond request/response

Real-time streams, signed webhooks, hash-chained audit

The control plane is event-driven. Subscribe to what matters, ignore the rest.

subscribe to deploy progressjavascript
// Stream deployment progress in real time.
const ws = new WebSocket(
  'wss://api.prodxcloud.com/ws/api/v3/tenant/provision/status'
);

ws.onopen = () => ws.send(JSON.stringify({
  type: 'subscribe',
  session_id: 'adc2d5c4-0b4e-4ff6-b351-106200b1cdf6',
  token: 'eyJhbGciOi…',
}));

ws.onmessage = (e) => {
  const ev = JSON.parse(e.data);
  console.log(`[${ev.progress}%] ${ev.status}`);
  // [10%] cloning repo
  // [40%] running terraform apply
  // [85%] systemd unit started
  // [100%] deployment complete
};

FAQ

Questions developers ask first

Ship the loop, not the boilerplate

One API key. One static binary. Every plane the dashboard touches, exposed and documented.