walkerOS Flow
Build, validate, simulate, and deploy walkerOS event pipelines
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
@walkeros/mcpclaude mcp add walkeros-flow -e 'WALKEROS_TOKEN=<your walkeros_token>' -e 'WALKEROS_PROJECT_ID=<WALKEROS_PROJECT_ID>' -e 'WALKEROS_APP_URL=<WALKEROS_APP_URL>' -- npx -y @walkeros/mcp@4.5.0
{
"mcpServers": {
"walkeros-flow": {
"command": "npx",
"args": [
"-y",
"@walkeros/mcp@4.5.0"
],
"env": {
"WALKEROS_TOKEN": "<your walkeros_token>",
"WALKEROS_PROJECT_ID": "<WALKEROS_PROJECT_ID>",
"WALKEROS_APP_URL": "<WALKEROS_APP_URL>"
}
}
}
}
Environment variables
WALKEROS_TOKENsecret walkerOS API token. Optional, the local tools work without it and the auth tool can log in instead.WALKEROS_PROJECT_IDDefault walkerOS project id (proj_...) used by the cloud tools.WALKEROS_APP_URLBase URL override for the walkerOS app. Defaults to https://app.walkeros.io.
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
Event collection you own, version, and trust
From browser to BigQuery and ad platforms - warehouse-native, and ready for AI agents via MCP.
The problem
GA4, custom tags, ad pixels - each one a separate setup, none of them agreeing on the same numbers. When something breaks, you can't see where.
walkerOS is one collection layer for all of them.
Why walkerOS?
- Config-as-code - version control your tracking, review it in PRs, deploy with confidence
- Declarative tagging - tag your UI in HTML, not scattered JavaScript
- Consent-native - events queue until consent is given, then flush correctly to every destination
- Schema validation - catch bad events at collection time, not weeks later in a dashboard
- One layer, many destinations - send to your warehouse and ad platforms from a single event definition
- Warehouse-native - events land clean and structured in your data warehouse, ready to query
- MIT licensed - self-host anywhere, no vendor lock-in
How it works
- Sources: Where events come from (browser, dataLayer, Express, AWS Lambda, GCP Functions, and more)
- Collector: The processing engine (consent, validation, mapping, routing, enrichment)
- Destinations: Where events go (GA4, Google Ads, Meta CAPI, BigQuery, and more)
Two ways to install walkerOS
Choose one based on your workflow and integration possibilities:
| Mode | Description | Best For |
|---|---|---|
| Integrated | Import directly into your TypeScript application | React/Next.js apps, TypeScript projects |
| Bundled | Build a standalone script from JSON config with npx walkeros | Static sites, Docker deployments, CI/CD |
Integrated (import into your app):
import { startFlow } from '@walkeros/collector';
const { elb } = await startFlow({
destinations: {
console: {
code: {
type: 'console',
config: {},
push: (event) => console.log('Event:', event.name),
},
},
},
});
await elb({ name: 'page view', data: { title: 'Home' } });
// -> logs: Event: page view
Wire a real source and destination once you are ready:
import { startFlow } from '@walkeros/collector';
import { sourceBrowser } from '@walkeros/web-source-browser';
import { destinationGtag } from '@walkeros/web-destination-gtag';
await startFlow({
sources: {
browser: {
code: sourceBrowser,
config: { settings: { pageview: true } },
},
},
destinations: {
ga4: {
code: destinationGtag,
config: {
settings: { ga4: { measurementId: 'G-XXX' } },
},
},
},
});
Bundled (build from JSON config):
{
"version": 4,
"flows": {
"default": {
"config": {
"platform": "web",
"bundle": {
"packages": {
"@walkeros/collector": {},
"@walkeros/web-source-browser": {},
"@walkeros/web-destination-gtag": {}
}
}
},
"sources": {
"browser": {
"package": "@walkeros/web-source-browser",
"config": { "settings": { "pageview": true } }
}
},
"destinations": {
"ga4": {
"package": "@walkeros/web-destination-gtag",
"config": {
"settings": { "ga4": { "measurementId": "G-XXX" } }
}
}
}
}
}
}
Then: npx walkeros bundle flow.json
- Operating Modes
- Quickstart guide for React
- Full Documentation - Complete guides and API reference
- Destinations - GA4, Meta, BigQuery, and more
- React Demo
- Storybook
AI-ready via MCP
walkerOS exposes a Model Context Protocol (MCP) interface. AI agents can read your event schema, suggest tracking definitions, and generate integration code - making your event layer programmable, not just configurable.
In Claude Code, one plugin installs both MCP servers and the walkerOS skills:
/plugin marketplace add elbwalker/walkerOS
/plugin install walkeros@elbwalker
For any other MCP client, add the servers to its configuration:
{
"mcpServers": {
"walkeros-flow": {
"command": "npx",
"args": ["@walkeros/mcp"]
},
"walkeros-source-browser": {
"command": "npx",
"args": ["@walkeros/mcp-source-browser"]
}
}
}
Loading a flow, validating it, and simulating an event all run locally, no account needed. See the MCP docs.
Coming from Google Tag Manager? See walkerOS vs. GTM.
Contributing
⭐️ Help us grow and star us. See our Contributing Guidelines to get involved.
Support
Need help? Start a discussion, or reach out via email.
For more insights, visit the talks repository.
License
Licensed under the MIT License.
Frequently asked questions
What is walkerOS Flow?
Build, validate, simulate, and deploy walkerOS event pipelines
How do I install walkerOS Flow?
It runs on your machine. In Claude Code: claude mcp add walkeros-flow -e 'WALKEROS_TOKEN=<your walkeros_token>' -e 'WALKEROS_PROJECT_ID=<WALKEROS_PROJECT_ID>' -e 'WALKEROS_APP_URL=<WALKEROS_APP_URL>' -- npx -y @walkeros/mcp@4.5.0. For other clients, paste the JSON configuration from this page into their MCP settings.
Does walkerOS Flow need an API key?
Yes. It expects WALKEROS_TOKEN, which you set in its configuration.
Is walkerOS Flow open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains walkerOS Flow?
It is published by elbwalker. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.