Local
@workflow/world-local
Zero-config world bundled with Workflow for local development. No external services required.
The Local World is bundled with workflow and used automatically during local development. No installation or configuration required.
To explicitly use the local world in any environment, set the environment variable:
WORKFLOW_TARGET_WORLD=localObservability
The workflow CLI uses the local world by default. Running these commands inside your workflow project will show your local development workflows:
# List recent workflow runs
npx workflow inspect runs
# Launch the web UI
npx workflow webLearn more in the Observability documentation.
Testing & Performance
E2E Tests
Spec compliance is tested against Next.js (Turbopack) built in production mode and started with `next start`. View CI run →
View comprehensive E2E test results against all frameworks/configurations
Benchmarks
Click on a benchmark to view performance history over the last 30 commits.
| Benchmark | Time | Samples | |
|---|---|---|---|
Promise.all with 10 concurrent steps | 1.42s | 15 | |
Promise.all with 25 concurrent steps | 2.26s | 10 | |
Promise.race with 10 concurrent steps | 1.43s | 15 | |
Promise.race with 25 concurrent steps | 2.27s | 10 | |
workflow with 1 step | 1.11s | 10 | |
workflow with 10 sequential steps | 10.80s | 5 | |
workflow with no steps | 43ms | 10 |
Stream Benchmarks
| Benchmark | Time | TTFB | Slurp | Samples | |
|---|---|---|---|---|---|
| workflow with stream | 178ms | 993ms | — | 10 |
Last updated: 1/14/2026, 10:31:00 PM · Commit: abdca8f
Configuration
The local world works with zero configuration, but you can customize behavior through environment variables or programmatically via createLocalWorld().
WORKFLOW_LOCAL_DATA_DIR
Directory for storing workflow data as JSON files. Default: .workflow-data/
PORT
The application dev server port. Used to enqueue steps and workflows. Default: auto-detected
WORKFLOW_LOCAL_BASE_URL
Full base URL override for HTTPS or custom hostnames. Default: http://localhost:{port}
Port resolution priority: baseUrl > port > PORT > auto-detected
WORKFLOW_LOCAL_QUEUE_CONCURRENCY
Maximum number of concurrent queue workers. Default: 100
Programmatic configuration
import { createLocalWorld } from "@workflow/world-local";
const world = createLocalWorld({
dataDir: "./custom-workflow-data",
port: 5173,
// baseUrl overrides port if set
baseUrl: "https://local.example.com:3000",
});Limitations
The local world is designed for development, not production:
- In-memory queue - Steps are queued in memory and do not persist across server restarts
- Filesystem storage - Data is stored in local JSON files
- Single instance - Cannot handle distributed deployments
- No authentication - Suitable only for local development
For production deployments, use the Vercel World or Postgres World.