Open source · Long-running · Any model

Agent workflows.
Open source.

Just code. Runs as long as the work takes. Any trigger, any model, your infrastructure or ours.

The platform

Everything an agent workflow needs.

Scheduling, long-running execution, secrets, observability, and governance — integrated so a workflow is just the file that does the work.

Cron & triggers

Run it weekdays at 9, on a webhook, on demand, or from another workflow. The schedule lives in the file.

Any model

Name a model per agent() call, bring your own key, or let Boardwalk route it. No API key required.

Live tail & history

Watch every run stream live. Every phase, agent turn, and output is kept in the run record.

Secrets, redacted

Secrets resolve in deterministic code and are redacted from model context, so prompt injection can't reach them.

Long-running agents

Holds a real process through sleeps and waits — minutes or hours, locals intact. No step functions, no checkpoints, no 15-minute Lambda ceiling.

Teams & audit

Orgs, roles, and an audit trail from day one. Share a run with a link.

How it works

A workflow is a program, not a flowchart.

No YAML, no node editor. The meta literal is the contract: schedule, secrets, budget. The rest of the file is just the script that runs.

morning-digest/index.ts
import { phase, agent, output, secrets } from "@boardwalk-labs/workflow";

export const meta = {
  slug: "morning-digest",
  title: "Morning Digest",
  triggers: [{ kind: "cron", expr: "0 9 * * 1-5" }],
  permissions: { secrets: [{ name: "GITHUB_TOKEN" }] },
};

phase("Fetch issues");
// deterministic code holds the secret;
// the model never sees its value
const token = await secrets.get("GITHUB_TOKEN");
const res = await fetch("https://api.github.com/issues", {
  headers: { Authorization: `Bearer ${token}` },
});
const issues = await res.json();

phase("Summarize");
const digest = await agent(
  `Write a morning digest of these issues:
   ${JSON.stringify(issues)}`,
);
output(digest);
  1. 01

    Write one file

    Real TypeScript with your editor, your packages, your tests. agent() calls any model. Name it per call, or let Boardwalk route it. Iterate with boardwalk dev as you go.

  2. 02

    Deploy it

    boardwalk deploy ships the file; boardwalk run triggers one right now and streams the result back to your terminal.

  3. 03

    It runs. For as long as it takes.

    Cron fires, the workflow holds its process as long as the work takes. Live tail while it runs, full history and notifications after.

Open source

Built in the open.

The SDK, CLI, manifest spec, and single-node runtime are Apache-2.0 and MIT on GitHub. Audit everything, run it on your own hardware, leave anytime. Boardwalk has to win on convenience, never on lock-in.

Read the code
  • The contract is public. The SDK and manifest spec are the same ones the platform runs: semver'd, documented, yours to build on.
  • Self-hostable. The single-node runtime runs the same workflow files on your hardware: cron, run history, a local UI.
  • Parity is tested. A shared conformance suite runs against every engine, so the same file behaves the same everywhere.

Get started

Close the laptop. It keeps running.

Deploy and you don't even need an API key. Boardwalk routes each agent() call to a model, and a run costs a flat, predictable unit. Free to start.