> Part of the walkerOS documentation. Project overview and full index: <https://www.walkeros.io/llms.txt>

# Operating modes

You have sent your first event. Now choose how to package and run walkerOS in production.

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[​](#integrated-mode "Direct link to 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 →**](https://www.walkeros.io/docs/getting-started/modes/integrated.md)

***

## Bundled mode[​](#bundled-mode "Direct link to Bundled mode")

The collector is a **separate artifact** you configure with JSON and build with the CLI.

```
{
  "version": 4,
  "flows": {
    "default": {
      "config": { "platform": "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 →**](https://www.walkeros.io/docs/getting-started/modes/bundled.md)

***

## Same core, different packaging[​](#same-core-different-packaging "Direct link to 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[​](#choosing-your-mode "Direct link to Choosing your mode")

| If you...                       | Use                                                                            |
| ------------------------------- | ------------------------------------------------------------------------------ |
| Want full control in TypeScript | [Integrated](https://www.walkeros.io/docs/getting-started/modes/integrated.md) |
| Prefer JSON configuration       | [Bundled](https://www.walkeros.io/docs/getting-started/modes/bundled.md)       |
| Building a React/Next.js app    | [Integrated](https://www.walkeros.io/docs/getting-started/modes/integrated.md) |
| Deploying with Docker           | [Bundled](https://www.walkeros.io/docs/getting-started/modes/bundled.md)       |
| Need dynamic runtime config     | [Integrated](https://www.walkeros.io/docs/getting-started/modes/integrated.md) |
| Want separate tracking script   | [Bundled](https://www.walkeros.io/docs/getting-started/modes/bundled.md)       |
| Both?                           | You can use Integrated client-side and Bundled server-side                     |

Then head to [Deploy](https://www.walkeros.io/docs/getting-started/deploy.md) to take it live.
