Getting Started
Flue to Fabric Harness
Map Flue concepts and commands to Fabric Harness.
Fabric Harness keeps the simple agent/session/skill/task model familiar from Flue, then adds enterprise controls: durable Temporal workflows, policy, approvals, audit, cost controls, multi-tenancy, and deployment hardening.
Concept mapping
| Flue | Fabric Harness |
|---|---|
.flue/ | .fabricharness/ |
.flue/agents/*.ts | .fabricharness/agents/*.ts |
flue dev | fh dev / fabric-harness dev |
flue run <agent> | fh run <agent> |
flue build | fh build |
flue add daytona | fh add daytona |
init({ model }) | init({ model }) |
agent.session() | agent.session() |
session.prompt() | session.prompt() |
session.skill() | session.skill() |
session.task() | session.task() |
session.fs / harness filesystem helper | session.fs and agent.fs |
| virtual/no-container sandbox | sandbox: 'virtual' |
| Cloudflare Workers AI | CloudflareWorkersAIModelProvider with Gateway + model metadata |
| Cloudflare Shell Workspace | sandbox: { backend: 'cloudflare', mode: 'shell-workspace' } |
| Admin/OpenAPI routes | /admin/* aliases and /openapi.json |
| Remote MCP tools | connectMcpServer() |
Minimal Fabric Harness agent
import { agent, schema } from '@fabric-harness/sdk';
export default agent({
name: 'hello',
input: schema.object({ name: schema.string().default('World') }),
output: schema.string(),
triggers: { webhook: true },
async run({ init, input }) {
const fabric = await init();
const session = await fabric.session();
return session.prompt(`Say hello to ${input.name}.`);
},
});CLI migration
# Flue
flue dev --target node
flue run hello --target node --id test-1 --payload '{"name":"Alice"}'
flue build --target cloudflare
flue add daytona | claude
# Fabric Harness
fh dev --target node
fh run hello --target node --id test-1 --payload '{"name":"Alice"}'
fh build --target cloudflare
fh add daytona | claudeFabric Harness also adds fh doctor, fh describe, fh export-audit, SBOM/provenance build flags, fh temporal-worker, authenticated admin/OpenAPI routes, Workers AI Gateway request metadata, and Cloudflare Shell Workspace mode.
Migration order
- Move
.flue/agentsto.fabricharness/agentsand convert exports toagent({ ... }). - Keep
init(),session.prompt(),session.skill(), andsession.task()calls as-is where possible. - Replace
fluecommands withfhequivalents. - Start on
sandbox: 'virtual'orsandbox: 'local'. - Add policies, approvals, audit, and Temporal after the basic agent works.