What is walkerOS
walkerOS is event data collection as code. Capture events from anywhere, transform them with mapping, and route them to any destination, all with built-in consent management.
No fragile UI configs. No vendor lock-in. Just tracking you can version, test, and trust.
Why walkerOS?
- Open-Source: MIT licensed, free forever, no restrictions
- Self-Hosted: Your infrastructure, your data, full ownership
- Config-as-Code: Version control, PRs, deploy with confidence
- Composable: Mix sources, destinations, and mappings freely
- Developer-First: TypeScript, no GUI, declarative tagging
How it works
Every walkerOS setup follows one pattern:
- Sources: Where events come from (browser DOM, dataLayer, HTTP endpoints, custom code)
- Collector: The processing engine (consent, enrichment, routing)
- Destinations: Where events go (GA4, your API, BigQuery, any service)
A "flow" connects sources to destinations through a collector. You can have one flow or many, client-side, server-side, or both working together.
The centerpiece: mapping
Mapping transforms events between stages. It's how walkerOS adapts to any source or destination format.
One transformation language works everywhere. This is what makes walkerOS truly composable.
Two ways to use walkerOS
Both modes use the same architecture. Choose based on how you want to configure and deploy.
Integrated mode
The collector lives inside your application code.
import { startFlow } from '@walkeros/collector';
import { sourceBrowser } from '@walkeros/web-source-browser';
const { elb } = await startFlow({
sources: { browser: { code: sourceBrowser } },
});
Best for: Building into your app, full TypeScript control, dynamic configuration.
Get started with integrated mode →
Bundled mode
The collector is a separate artifact you configure with JSON.
{
"version": 1,
"flows": {
"default": {
"web": {},
"sources": { "browser": { "package": "@walkeros/web-source-browser" } }
}
}
}
Then: walkeros bundle flow.json → standalone file.
Best for: Config-as-code, Docker deployments, separate tracking scripts.
Get started with bundled mode →
Core concepts
| Concept | What It Is | Learn More |
|---|---|---|
| Flow | Sources + collector + destinations configuration | Flow configuration |
| Event model | How events are structured (entity action format) | Event model |
| Mapping | Event transformation rules | Mapping |
| Consent | Privacy controls at destination and property level | Consent management |
| Sources | Event capture from browser, server, or custom code | Sources |
| Destinations | Event delivery to analytics, APIs, warehouses | Destinations |
Quick links
Just want to try it?
- Integrated Quickstart: npm install and go
- Bundled Quickstart: JSON config and CLI
Deploying to production?
- Docker Guide: Container deployment
- CLI Reference: Build and test commands
Already using walker.js?
- Walker.js Docs: Pre-built convenience bundle
Need help choosing?
- Operating Modes: Detailed comparison