QUICK START
Three boundaries, one deployment.
The dashboard pairs a runtime, the repository declares the app, and the CLI or MCP interface asks Small to reconcile the two.
Connect capacity
Create a runtime in the dashboard and run its generated, signed installer block on your VPS.
Declare the app
Add a reviewable small.yaml beside your source or container configuration.
Deploy
Run small deploy yourself or let an MCP-compatible coding agent do it.
RUNTIME
Connect a customer-owned VPS.
- Open Dashboard → Runtimes → Connect your VPS.
- Copy the signed installation block.
- SSH to a fresh supported VPS as a user with sudo access and run the generated installation block.
- The installer displays a short setup code. Enter it with a stable server name and region in the dashboard, then approve the connection.
- Wait for the installer and dashboard to report both heartbeat and managed ingress ready.
The installer reuses Docker Engine 24 or newer when healthy. Otherwise it installs Docker from its official signed APT repository. Small Node, its private Node.js runtime, and FRPC are pinned inside an Ed25519-verified release.
AGENT ACCESS
Use the same contract from any harness.
Open Dashboard → Agent setup for a guided flow that installs the CLI, creates a scoped token, registers the MCP server, and adds the portable deployment skill to a project. The stdio MCP server exposes validation, deployment, status, logs, secrets, domain, and rollback operations.
curl --proto '=https' --tlsv1.2 -fsSL https://small.zerotoagentic.com/cli/install.sh | sh printf '%s' "$SMALL_TOKEN" | small login --url https://small.zerotoagentic.com --token-stdin codex mcp add small -- small mcp claude mcp add --transport stdio --scope user small -- small mcp curl --proto '=https' --tlsv1.2 -fsSL https://small.zerotoagentic.com/skills/deploy-with-small/install.sh | sh
DEPLOYMENT CONTRACT
Keep intent in small.yaml.
An application must listen on 0.0.0.0 at the declared service port. Health endpoints should be fast and unauthenticated. Pin production images to a version or digest; Small records and runs the resolved immutable digest.
version: 1
name: hello-small
source:
type: image
image: nginx:alpine
service:
port: 80
healthcheck:
path: /
resources:
memoryMb: 128
cpus: 0.25
storage: []
access:
mode: public
env: {}
secrets: []
target:
server: production-vps-1small initsmall validatesmall deployOPERATIONS
Observe, replace, and recover.
Deployments progress through bounded milestones: source fetch, image pull or build, container start, health, ingress, and activation. A new release becomes active only after health and routing succeed.
small deploy --server production-vps-1 small status small logs hello-small small rollback <deployment-id> small stop hello-small --yes
Replacement cleanup is deterministic. Rollback uses the historical image digest rather than resolving an old mutable tag again.
SECRETS
Declare names, supply values out of band.
List required names under secrets, then read values from the environment of the trusted CLI or MCP process. Secret values are encrypted and are never returned by list operations.
export DATABASE_URL='postgres://…' small secrets set --app hello-small --from-env DATABASE_URL DATABASE_URL unset DATABASE_URL small secrets list --app hello-small
REQUEST PATH
Know where application traffic goes.
Small edge
TLS and hostname policy
Managed relay
Authorized FRP connection
Your VPS
Loopback container target
Application
Declared service port
In the current managed-relay mode, public application requests cross Small's edge and relay, but never the dashboard HTTP process. Small does not receive SSH access or a remote Docker socket. The constrained node leases only commands assigned to its runtime identity.
TROUBLESHOOTING
Start with evidence, then repair.
sudo small-node-installer check sudo systemctl status small-node --no-pager sudo journalctl -u small-node -n 200 --no-pager sudo small-node-installer repair
Credential rotation
Issue a replacement enrollment in the dashboard, then run the displayed small-node-installer reenroll command.
Node update
Run small-node-installer update --version …. A failed readiness check restores the prior release.
Safe uninstall
small-node-installer uninstall --yes revokes the node and preserves application containers and volumes.
PRIVATE ALPHA
Current limits are part of the contract.
- Managed relay is the supported customer-VPS ingress mode today. Direct-edge Caddy mode is roadmap work.
- Small does not purchase or provision a VPS for you yet.
- Persistent volumes remain single-node data. Back up stateful application data independently.
- Small is not Kubernetes, a remote shell, or a general server administration control plane.
READY TO SHIP?