Settings & Docs
demo environmentOrganization, gateway credentials and everything needed to point an OpenAI/OpenRouter-compatible client at the fabric.
Organization
Straits Industries
org_straits
- Created
- 14mo ago
- Projects
- 3
- Principals
- 3
- Store seeded
- 24s ago
Base URLs
/v1Primary gateway prefix — OpenAI/OpenRouter wire shapes, SSE streaming via text/event-stream./api/v1Alias of /v1 for SDKs that insist on an /api prefix — identical handlers via rewrite.Authenticate every call with Authorization: Bearer fab_.... The model field accepts canonical ids (anthropic/claude-sonnet), logical profiles (@company/general-fast) or fabric/auto. Unauthorized requests receive OpenAI-shaped 401 errors.
Gateway API keys
Seeded demo principals. Keys are masked in the console — use copy to grab the full value.
| Principal | Kind | Project | API key | Default profile | Status |
|---|---|---|---|---|---|
Platform Admin prin_admin | user | Core Platform | fab_demo_••••• | @company/general-balanced | active |
Customer Portal API prin_app | service | Core Platform | fab_demo_••• | @company/general-fast | active |
Ops Copilot Agent prin_agent | agent | Agent Operations | fab_demo_••••• | @company/auto | active |
Quickstart
Point any OpenAI-compatible client at the gateway. Add X-OpenRouter-Metadata: enabled (or explain: true) to receive routing, guardrail and cost metadata with each response.
curl
curl https://<your-host>/v1/chat/completions \
-H "Authorization: Bearer fab_demo_admin" \
-H "Content-Type: application/json" \
-d '{
"model": "@company/general-balanced",
"messages": [{ "role": "user", "content": "Summarize our routing policy." }],
"stream": false
}'fetch (browser / worker)
const res = await fetch("/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer fab_demo_app",
"Content-Type": "application/json",
"X-OpenRouter-Metadata": "enabled", // include fabric_metadata in the response
},
body: JSON.stringify({
model: "fabric/auto", // or any @company/... profile / canonical model
messages: [{ role: "user", content: "Hello, fabric." }],
session_id: "sess_demo_123", // optional: pins prompt-cache affinity
}),
});
const completion = await res.json();
console.log(completion.choices[0].message.content);Deployment notes
What this demo deployment does and does not persist.
- · In-memory demo store: all entities, caches, budgets and the generation ledger live in a per-isolate singleton seeded deterministically on first access — a stand-in for the Postgres / Durable Objects / KV split of the production design.
- · State does not survive isolate recycling and is not shared across Cloudflare Worker isolates; two concurrent requests may observe different (but identically seeded) stores.
- · Provider calls are simulated with realistic latency, failure injection and pricing. Setting OPENAI_API_KEY / ANTHROPIC_API_KEY enables real passthrough for supported models.
- · Timestamps in seed data are relative to seed time, so dashboards always show a live-looking recent window.
Console sections
Everything the control plane exposes.
Overview
Fleet health, spend and traffic at a glance
Model Catalog
Canonical models, capabilities, lifecycle
Service Profiles
Logical @company/* profiles apps call
Providers & Accounts
Supply plane, pools, contracts
Egress Network
Trust-tiered egress fleet
Routing Policies
Placement constraints + effective policy
Guardrails & DLP
Policies, evaluators, decision feed
Cache
Exact cache + prompt-affinity directory
Budgets & FinOps
Spend, contracts, cost layers, ledger
Generations
Full request ledger with route plans
Playground
Send live requests through the gateway
Route Simulator
Dry-run routing decisions
Incidents
Failures, fingerprints, circuit breakers