# chambers

**Shared resources.** Two shop agents need databases, but they do not need two Postgres servers. Chambers share the server while giving each worker its own working database.

*One store beneath the nest, with a separate room for each worker.*

*share the heavy bits. keep your own working data.*
*One Postgres engine contains the catalog and checkout databases. Each starts from the products seed. Each worker keeps its own orders.*

## share the engine, separate the orders

The catalog worker and checkout worker use the same Postgres container. Each gets a different database, seeded with the same products. An order placed in one shop does not appear in the other. The database connection reaches the API through a private file; JSON shows a reference rather than the password.

You can explicitly share a seeded database when workers need the same mutable data. That choice shares writes too. A schema change belongs in a private fork so everyone else can keep working. Today, choose private databases up front or start a fresh private database from the seed (a fresh seeded fork, without current orders); copying a live database into a fork is not available yet.

## a recipe for every resource

Chambers are moving to **recipes**: descriptions of how to start a resource, make a worker's room, and check it. That will make the same pattern work for caches, object stores, and other services.

**Today antil manages Postgres only.** Recipes are [coming](/docs/chambers/recipes/). The shop shares Redis manually through Compose, with a separate key prefix for each worktree.

[Tunnels](/docs/tunnels/) connect apps to these resources. [Seals](/docs/seals/) will account for the environment a test used. All three rely on the [foundation](/docs/foundation/).

[Give workers private Postgres databases](/docs/chambers/postgres/) · [change a schema privately](/docs/chambers/schema-change/) · [share Redis today](/docs/chambers/redis/)
