workflow
Version:
Workflow DevKit - Build durable, resilient, and observable workflows
85 lines (56 loc) • 2.53 kB
text/mdx
title: Local World
description: Zero-config world bundled with Workflow for local development. No external services required.
type: integration
summary: Set up the Local World for zero-config workflow development on your machine.
prerequisites:
- /docs/deploying
related:
- /docs/deploying/world/postgres-world
- /docs/deploying/world/vercel-world
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:
```bash
WORKFLOW_TARGET_WORLD=local
```
## Observability
The `workflow` CLI uses the local world by default. Running these commands inside your workflow project will show your local development workflows:
```bash
# List recent workflow runs
npx workflow inspect runs
# Launch the web UI
npx workflow web
```
Learn more in the [Observability](/docs/observability) documentation.
## Testing & Performance
<WorldTestingPerformance />
## 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
{/* @skip-typecheck: incomplete code sample */}
```typescript title="workflow.config.ts" lineNumbers
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](/worlds/vercel) or [Postgres World](/worlds/postgres).