# Architecture

`apps/` are runnable surfaces; `packages/` are the shared layers they compose from. This is the code map — read it before exploring code.

```
apps       cli   www   www-docs   workflow-conductor
             │ consume
packages   @arbe/core
             │ composes
           streams  sandbox  task  errors
```

`cli` runs on bun; `www` is sveltekit on CF Workers; `www-docs` is astro/starlight; `workflow-conductor` is the durable-workflow daemon on the arbe1 sprite — deliberately thin (absurd-sdk + pg only, no `@arbe/core`; see [workflows](workflows.md)).

## Packages

- `@arbe/core` — the domain hub. Per-entity write modules (houses, agents, environments, threads, entries, configs, workflows), the canonical schemas every other layer maps its data into, membership and permission helpers, and the pi session adapter.
- `@arbe/streams` — the durable-stream layer thread entries flow through (client, gateway, server).
- `@arbe/sandbox` — the sandbox runtimes that run agent work, daytona by default.
- `@arbe/task` — the repo-native task graph in `.arbe/tasks/`.
- `@arbe/errors` — shared error types.
