Straits Industriesproduction
Search models, nodes, traces…⌘K
SI

Settings & Docs

demo environment

Organization, 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.

PrincipalKindProjectAPI keyDefault profileStatus
Platform Admin
prin_admin
userCore Platformfab_demo_•••••@company/general-balancedactive
Customer Portal API
prin_app
serviceCore Platformfab_demo_•••@company/general-fastactive
Ops Copilot Agent
prin_agent
agentAgent Operationsfab_demo_•••••@company/autoactive

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.