← Back to blog

Every customer gets their own sandbox

AIself-hostingDocker

We’re building a private investigator bot for each customer company. The first design question wasn’t the model. It was where each bot’s data lives.

Three options: Hermes profiles (logical isolation), separate OS users, or one container per company. Profiles are cheap but the isolation is config-level. OS users are cleaner but heavy to run at scale. Containers give you process, filesystem, and network isolation for almost the same template effort as profiles.

So we went container per company. One folder per customer, one compose file, same image. The whole Hermes home mounts as the volume: config, secrets, skills, and the memory database all live inside it. Per-customer backup is literally copying a folder. A crashed bot can’t touch the others. Each container only holds its own bot token, so there’s no way to cross-read another customer’s credentials.

Adding a customer is docker compose up -d in a new folder. That’s the whole onboarding.

The honest trade-offs: every container runs its own gateway process, so memory adds up, and you need a pattern for many folders instead of manual copies. Fine for the scale we’re at.

First customer is rolling out on this. Same guard, same skills, separate everything else.