Self-hosted PaaS

Deploy apps.
No dashboard required.

agentic-hosting is a bare-metal PaaS designed for AI agents. REST API only -- no web UI, no click-ops. Build from git, provision databases, route traffic. All via curl.

View on GitHub Agent Runbook
agentic-hosting quickstart
curl -X POST $BASE_URL/v1/tenants/register \
  -H "X-Bootstrap-Token: $TOKEN" \
  -d '{"name":"my-app","email":"me@example.com"}'
 
{"tenant_id":"ten_...", "api_key":"keyid.secret"}
 
curl -X POST $BASE_URL/v1/services \
  -H "Authorization: Bearer $API_KEY" \
  -d '{"name":"web","image":"nginx:alpine","port":80}'
 
{"id":"svc_...", "status":"deploying", "url":"https://web.example.com"}

Features

Build from git

Nixpacks auto-detects your stack. Push to GitHub, get a container. Zero config.

🔒

gVisor isolation

Every container runs in a gVisor sandbox. Syscall interception, read-only rootfs, dropped capabilities.

🗄

Managed databases

Provision Postgres or Redis in seconds. Encrypted connection strings returned immediately.

🔁

Self-healing

Reconciler re-syncs every 60s. Circuit breaker stops crash loops. GC keeps the host clean.

🤖

Agentic-first

Designed for AI agents. Idempotency keys, per-tenant rate limits, structured JSON everywhere.

📦

Single binary

One Go binary. SQLite for state. No Kubernetes, no etcd, no operator. Runs on any Linux box.

Stack

Go Docker gVisor Traefik Nixpacks SQLite chi AES-256-GCM

Claude Code

slash commands
# Install the skill
cp .claude/skills/agentic-hosting/SKILL.md ~/.claude/skills/agentic-hosting/
 
# Then use slash commands in Claude Code
/deploy https://github.com/org/app web 3000
Building with Nixpacks... deploying... running
 
/db web postgres
Postgres provisioned → DATABASE_URL set → service restarted
 
/status
Disk: 24% Docker: ok gVisor: ok
web                running
web-postgres    running
🤖

/deploy

Deploy from a git URL (Nixpacks build) or Docker image. Streams build logs in real time.

📊

/status

Full dashboard — disk usage, all services, databases, and circuit breaker state.

🗄️

/db

Provision Postgres or Redis, fetch the connection string, and wire it to a service automatically.

📋

/logs

Stream build logs for any service by name. No IDs to look up.