Static product overview

The ArcFlow static product is the combination of admin API, workflow registry, arcflow-relay, and @arcflow/static browser SDK. Together they deliver production chat widgets and published workflows without embedding LLM API keys or full agent definitions in frontend JavaScript bundles.

Three-tier model

text
Operator (admin key)
 → POST /v1/admin/sites
 → POST.../knowledge/ingest
 → POST.../workflows/chat/publish

Developer (frontend)
 → embed Relay URL + site token (build-time env)
 → runPublished("chat", "^1.0.0", message)

Browser
 → Relay → Server → arcflow-core
 → poll status / trace (SSE deferred (server streaming))
TierActorTools
1OperatorAdmin API, migrate, ingest, publish
2Frontend dev@arcflow/static, Vite env injection
3End userChat UI calling Relay only

Components

ComponentRole
arcflow-serverRegistry, runs, admin routes, Postgres
arcflow-relayOrigin + rate limit + site token auth
@arcflow/staticBrowser client (ArcFlowClient, runPublished)
Qdrant + embedding providerKnowledge for RAG chat (when configured)

Relay is stateless. Postgres holds sites, runs, and registry versions.

Typical operator flow

  1. Create site, save one-time site_token.
  2. Ingest knowledge into site KB namespace.
  3. Publish chat workflow version (e.g. 1.0.1).
  4. Hand Relay URL and token to frontend team via secure channel.
  5. Frontend calls runPublished("chat", "^1.0.0", userMessage).

Step detail: site-lifecycle.md, knowledge-and-publish.md.

Typical developer flow

typescript
import { ArcFlowClient } from "@arcflow/static";

const client = new ArcFlowClient({
 baseUrl: import.meta.env.VITE_ARCFLOW_RELAY_URL,
 apiKey: import.meta.env.VITE_ARCFLOW_SITE_TOKEN,
 mode: "relay",
 siteId: import.meta.env.VITE_ARCFLOW_SITE_ID,
});

const result = await client.runPublished("chat", "^1.0.0", "What is your refund policy?");
console.log(result.output);

Example app: examples/static/chat-rag/.

What static product does not do

  • Server SSE (streaming deferred): no GET /v1/runs/{id}/events on server; use trace polling for streaming UX.
  • Operator dashboard UI (Operator dashboard UI): OSS spec exists; UI in private ArcFlow-Dashboard repo.
  • Inline workflow from browser when allow_inline: false (recommended production default).

Maturity

Static product (Relay + admin + static SDK) is production per maturity matrix (2026-05-31). Graph and RAG features are available when published workflows and Qdrant are configured.

PageTopic
browser-sdk-api.mdSDK reference
security-model.mdBrowser exposure rules
relay/overview.mdProxy behavior
server/http-api-reference.mdAdmin routes