Getting started
From email to a working sandbox driven by Claude Desktop in about 5 minutes. No install. No local Node. No AWS credentials.
Step 1 — Request a trial key
Go to app.staticowl.com/signup-key.html, drop your email + a one-line "what are you building," and submit.
We send a verification link to that email. Click it. We mint a 30-day so_* API key, auto-provision a sandbox site with its own graph + seeded content, and show you the key once.
- The key is displayed on the verified page once — copy it somewhere safe.
- The sandbox site is yours: real graph, real content types (a
Pagetype pre-seeded), full read + write through the API. - Expires at 30 days. The sandbox is dropped when the key expires.
Step 2 — Connect Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (or %APPDATA%\Claude\claude_desktop_config.json on Windows) and add this block, pasting your trial key in place of YOUR_KEY_HERE:
{
"mcpServers": {
"staticowl": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://app.staticowl.com/api/mcp",
"--header", "Authorization:Bearer YOUR_KEY_HERE"
]
}
}
}
The verified-key page renders this snippet with your real key pre-filled — copy it from there to skip the substitution.
Restart Claude Desktop. You should see 38 StaticOwl tools available (sites_list, content_create, types_create, build_trigger, etc.) under the integration picker.
Step 3 — Drive the CMS from a chat
Three prompts that land well on a fresh sandbox:
"Show me my sandbox"
Use the StaticOwl MCP to list my sites. There should be one called "Sandbox" — show me its details (graph name, environments, theme) and tell me what content types it was seeded with. Then list the sample pages.
"Create your first content type"
In my Sandbox site, design a content type called "Recipe" with fields for title (string, required), ingredients (array of strings), instructions (richtext), prepMinutes (number), and a slug. Create it through your tools, then create three example recipes I can use as test data.
"Plan a docs site end-to-end"
I want to extend my Sandbox to be a documentation site for an open-source library. Walk me through every change you'd make — new content types (Doc, Section, ApiReference), sample content, and the template you'd wire up. Make the changes through your tools and tell me when each step succeeds.
Or use curl directly
Don't want Claude Desktop in the loop? The same API is on plain HTTP:
# Health check
curl https://app.staticowl.com/api/health
# Who am I?
curl -H "Authorization: Bearer $KEY" https://app.staticowl.com/api/access/me
# List my sites
curl -H "Authorization: Bearer $KEY" https://app.staticowl.com/api/sites
# Call MCP directly (JSON-RPC over HTTP)
curl -X POST https://app.staticowl.com/api/mcp \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
What your trial includes
- One sandbox site with its own dedicated graph + the developer starter kit (Page type + sample pages)
- Full MCP access — all 38 tools usable against your sandbox
- Schema, content, build pipeline — every feature except creating more sites or minting more keys
- 30 days — sandbox is dropped when the trial key expires
What a full account adds
- Unlimited sites — production tenants, per-customer graphs, the works
- Additional API keys — service-account keys for CI / production
- Persistent storage past 30 days — your sandbox content can migrate into a real tenant
Where to go next
- MCP reference — every one of the 38 tools, with input schemas
- Features overview — what the system can do
- HTTP API — for callers that don't use MCP
- Architecture — how the bitemporal graph backbone works
- Lifecycle hooks — code at save / render / publish
Self-hosting (advanced)
The default path above runs against our hosted CMS. If you'd rather run the CMS on your own infrastructure — e.g. air-gapped audit-grade install or development against a local engine — the source is open and self-installable.
Prerequisites
- Node.js 20+ (
node --version) - A Graphiquity / InvariantDB engine endpoint (hosted or local)
- An AWS account if you want the default S3 + CloudFront deploy target
Install
git clone <repo>
cd cms
npm install
npm run build
Configure
# Engine connection — required
export GRAPHIQUITY_ENDPOINT=https://api.graphiquity.com
export GRAPHIQUITY_API_KEY=gq_yourkey
# Cognito — required for the admin UI auth flow
export USER_POOL_ID=us-east-1_xxxxxx
export USER_POOL_CLIENT_ID=yyyyyyyyy
export AWS_REGION=us-east-1
# Trial flow (optional, off if STATICOWL_MAIL_FROM is unset)
export STATICOWL_MAIL_FROM="StaticOwl <noreply@yourdomain.com>"
export STATICOWL_OPERATOR_EMAIL=ops@yourdomain.com
# Deploy target — defaults to static-paths
export STATICOWL_DEPLOY_TARGET=static-paths
Full env reference: operations.
Run
npm run cms -- serve --port 5000
Boots the admin server on port 5000 with the admin UI at http://localhost:5000/admin/ and the MCP server at http://localhost:5000/api/mcp.
Common gotchas (self-host)
- "Cognito SDK not loaded" — verify
USER_POOL_ID+USER_POOL_CLIENT_ID. The SDK loads from a CDN; the browser needs network access. - "Engine connection refused" —
GRAPHIQUITY_ENDPOINTisn't reachable from wherever the server runs. - GitHub deploy target needs
giton the host — the publisher shells out togit. Lambda doesn't have it; deploy publisher work to EC2. - Lifecycle hook RCE risk — verify your sandbox is
isolated-vm, not Node's built-invm(which is not a security boundary). See lifecycle-hooks.