Operating modes
walkerOS offers two ways to configure and deploy your event collection. Both use the same underlying architecture (Sources, Collector, Destinations), just packaged differently.
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 walkerOS directly into your app
- Full programmatic control and type safety
- Custom logic and dynamic configuration
- Teams comfortable with TypeScript
Get started with integrated mode →
Bundled mode
The collector is a separate artifact you configure with JSON and build with the CLI.
{
"version": 1,
"flows": {
"default": {
"web": {},
"sources": { "browser": { "package": "@walkeros/web-source-browser" } }
}
}
}
Then: walkeros bundle flow.json → outputs standalone file.
Best for:
- Config-as-code workflows (Git, PRs, CI/CD)
- Independent versioning and deployment
- Teams who prefer JSON over TypeScript
- Docker deployments and server-side collection
Get started with bundled mode →
Same core, different packaging
Both modes use identical:
- Sources - Browser, DataLayer, HTTP, custom
- Collector - Event processing, consent, enrichment
- Destinations - GA4, APIs, BigQuery, custom
- Mapping - Event transformation rules
The only difference is how you configure and deploy them.
Choosing your mode
| If you... | Use |
|---|---|
| Want full control in TypeScript | Integrated |
| Prefer JSON configuration | Bundled |
| Building a React/Next.js app | Integrated |
| Deploying with Docker | Bundled |
| Need dynamic runtime config | Integrated |
| Want separate tracking script | Bundled |
| Both? | You can use Integrated client-side and Bundled server-side |
💡 Need Professional Support?
Need professional support with your walkerOS implementation? Check out our services.