Curiosity Orchestrator
A Studio for every team.
One way to manage them.
Give each team, project or customer its own Curiosity Studio, with its own data and its own users, on hardware you control. The orchestrator puts them behind one address, wakes each one when someone opens it and puts it to sleep when nobody does.
05 · Unused Studios go back to sleep
What it does
A Studio for every team, without a server for every team
Teams, projects and customers each get a Studio of their own. You run one machine, or a few.
01
Separate where it matters
Each Studio keeps its own data, its own users and its own settings. A team sees its Studio and nothing else.
02
Memory only for the Studios in use
A Studio nobody has opened for a while goes to sleep and frees its memory. The next visit wakes it.
03
One address to share
Every Studio lives at example.com/{name} or {name}.example.com. A landing page lists the ones you publish.
04
On hardware you control
It runs on your servers, with your certificates. The data never leaves them.
Why use it
What teams use the orchestrator for
One install covers the deployments, the logins and the experiments around Studio.
Manage every deployment in one place
Every Studio your company runs, in one list: who owns it, which release it is on, how much it uses. Create, update, back up and retire them without a runbook per server.
Orchestration without the overhead
No cluster to build and no scripts to maintain. Docker on a server is enough: the orchestrator starts, stops, routes and secures every Studio.
One sign in for every Studio
Define user accounts once and they exist in every Studio. Turn on the shared sign in, and people log in on the landing page once and open any Studio already signed in.
A playground for developers
Give developers their own console access, an address prefix and a number of Studios. They spin one up to experiment, reset it to empty, and delete it when done, away from production.
Try a release before everyone gets it
Run a new Studio release on one Studio, check it with the team, then move every other Studio to it in one step.
A Studio per customer or pilot
Partners, pilots and demos each get their own Studio and data, on a landing page with your own look. Keep one running for the day of a demo.
Sleep and wake
Size the server for the Studios in use, not for every Studio
Most Studios are idle most of the day. They sleep until someone needs them. Pick a step to stop the drawing and read it.
- 01
Each Studio runs while its team works
A Studio starts when someone opens it and stays up while it is used.
- 02
A while without use, then it sleeps
With nobody on it for a while, the Studio stops. Its data stays where it was.
- 03
A visit wakes it, at any hour
Somebody opens the legal Studio at nine in the evening. It starts, and goes back to sleep when they are done.
- 04
Keep one warm for a launch
Hold a Studio running for up to 7 days, or for good. If it stops for any reason, it is started again.
- 05
Memory for the Studios in use
At the busiest hour five of the six run. Most of the day, far fewer do. The server is sized for that, not for all six.
Management console
Every Studio in one list
What would otherwise be a runbook per Studio is a button in one console.
- Create or delete a Studio from one form
- Update every Studio to a new release at once
- Keep a Studio running for a launch or a demo
- Back up, restore or reset a Studio’s data
- See CPU, memory and disk for each Studio and the server
- Give a team lead their own Studios to manage
More machines
Outgrow one server without changing an address
Add machines as you add Studios. One orchestrator manages the others, and every Studio keeps its address wherever it runs.
- 01
One machine fills up
Every slot on the first server holds a Studio.
- 02
Add a machine
Install the orchestrator on more servers and scale up your deployments.
- 03
New Studios go where there is room
Create a Studio on a machine you pick, or let the orchestrator pick the one with the most free memory.
- 04
Move a Studio across
The Studio stops, its data is copied to the other machine, and it starts there.
- 05
Visitors use the same address
Every Studio is still reached at
example.com/{name}, whichever machine runs it.
Operations
The work around a Studio, done once for all of them
HTTPS, backups, updates and capacity are part of the product, not scripts you keep.
HTTPS
Bring your own certificate or let Let’s Encrypt issue and renew one, for the server and for each Studio’s own address.
Backups
Download a Studio’s data, restore it into the same Studio or a new one, or reset it to empty.
Updates
Move one Studio to a new release, or all of them at once. Their data stays where it is.
Capacity
Cap how many Studios run at once. When the server is full or short of memory, the one used least recently goes to sleep first.
Usage and logs
CPU, memory, network and disk for each Studio and the whole server, with history and logs beside them.
Automation
Everything the console does, a script can do through the same API, with a token.
Security
Separate Studios, one place to secure
The orchestrator is the one door to every Studio, so it is the one place to harden.
01
A protected console
The console needs a sign in, and repeated failed sign ins are slowed down. Console users see only the Studios they own.
02
Each Studio on its own address
Opened on its own subdomain, a Studio is kept apart from the console and from every other Studio in the browser.
03
A host name for the console
Put the console on an address of its own, so it is not reachable from the Studios’ addresses at all.
04
Treat the server as sensitive
The orchestrator controls Docker on the server, which amounts to full control of it. Limit who can sign in to the machine.
Install
Running in a few minutes
One command to install, one to start. All it needs is Docker.
macOS · Linux
01 · Install
Downloads the latest release, checks it and puts curiosity-orchestrator on your PATH. You need Docker on the machine.
curl -fsSL https://raw.githubusercontent.com/curiosity-ai/orchestrator/refs/heads/main/install.sh | sh
02 · Start it
Start it with a password for the console, and a folder for its data.
ORC_ADMIN_PASSWORD='choose-a-password' ORC_STORAGE="$HOME/.curiosity/orchestrator-data" curiosity-orchestrator
What you see
curl -fsSL https://raw.githubusercontent.com/curiosity-ai/orchestrator/refs/heads/main/install.sh | shInstalling the Curiosity Orchestrator (linux-x64) downloading v26.10.6452: https://github.com/curiosity-ai/orchestrator/releases/download/v26.10.6452/curiosity-orchestrator-26.10.6452-linux-x64.tar.gz sha256 verified installed /home/you/.curiosity/orchestrator launcher /home/you/.curiosity/bin/curiosity-orchestrator added /home/you/.curiosity/bin to PATH in /home/you/.bashrc The Curiosity Orchestrator v26.10.6452 is installed.Open a new terminal, or run this one first: export PATH="/home/you/.curiosity/bin:$PATH"Then start it with a management password (data goes to ./storage unless ORC_STORAGE says otherwise): ORC_ADMIN_PASSWORD='choose-a-password' ORC_STORAGE="$HOME/.curiosity/orchestrator-data" curiosity-orchestrator ORC_ADMIN_PASSWORD='choose-a-password' curiosity-orchestrator
Windows
01 · Install
Downloads the latest release, checks it and adds it to your PATH. You need Docker Desktop on the machine.
irm https://raw.githubusercontent.com/curiosity-ai/orchestrator/refs/heads/main/install.ps1 | iex
02 · Start it
Start it with a password for the console, and a folder for its data.
$env:ORC_ADMIN_PASSWORD = 'choose-a-password'; $env:ORC_STORAGE = "$HOME\.curiosity\orchestrator-data"; curiosity-orchestrator
What you see
irm https://raw.githubusercontent.com/curiosity-ai/orchestrator/refs/heads/main/install.ps1 | iexInstalling the Curiosity Orchestrator (win-x64) downloading v26.10.6452: https://github.com/curiosity-ai/orchestrator/releases/download/v26.10.6452/curiosity-orchestrator-26.10.6452-win-x64.zip sha256 verified installed C:\Users\you\.curiosity\orchestrator The Curiosity Orchestrator v26.10.6452 is installed.Start it with a management password (data goes to .\storage unless ORC_STORAGE says otherwise): $env:ORC_ADMIN_PASSWORD = 'choose-a-password'; $env:ORC_STORAGE = 'C:\Users\you\.curiosity\orchestrator-data'; curiosity-orchestrator $env:ORC_ADMIN_PASSWORD = 'choose-a-password'; curiosity-orchestrator
Docker
01 · Try it
The orchestrator also runs as a container. It manages the Studios through the host’s Docker, so it needs the Docker socket.
docker run -d --name curiosity-orchestrator -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock -v curiosity-orchestrator-data:/data \
-e ORC_ADMIN_PASSWORD='choose-a-password' curiosityai/orchestrator:latest
02 · On a server
Serve it over HTTPS at your own address. The docs cover Let’s Encrypt.
docker run -d --name curiosity-orchestrator --restart unless-stopped -p 443:443 -p 80:8080 \
-v /var/run/docker.sock:/var/run/docker.sock -v curiosity-orchestrator-data:/data \
-e ORC_ADMIN_PASSWORD='choose-a-password' -e ORC_PUBLIC_ADDRESS=https://studios.example.com \
-e ORC_CERT_SELF_SIGNED=true -e ORC_PORT=443 -e ORC_PORT_LOCAL=8080 -e ORC_REDIRECT_TO_HTTPS=true \
curiosityai/orchestrator:latest
What you see
docker run -d --name curiosity-orchestrator -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v curiosity-orchestrator-data:/data -e ORC_ADMIN_PASSWORD='choose-a-password' curiosityai/orchestrator:latestOpen http://localhost:8080/#/manage and sign in as admin.
To upgrade, run the install command again. Your Studios and their data are kept.
Your first Studio
From install to a team’s Studio
- 01
Sign in
Open
localhost:8080/#/manageand sign in asadminwith your password. - 02
Create a Studio
Name it, say
quality. The first one takes a while, as Studio downloads once. - 03
Open it
Go to
localhost:8080/quality/. Share that address with the team.
FAQ
Questions about the orchestrator
What does the orchestrator need to run?
A Linux, macOS or Windows machine with Docker. The download is self contained, and the install script tells you if Docker is missing.
How is it different from running Studio in Docker myself?
One Studio in Docker is one container to look after. The orchestrator is for many: one address, sleep and wake, updates, backups and usage for all of them, from one console.
What happens to a Studio’s data when it sleeps?
Nothing. It stays on disk. Sleeping only stops the Studio, and updates never touch its data either.
Does a background request wake a sleeping Studio?
No. Only a person opening it in the browser does. A forgotten browser tab does not keep a Studio awake.
How do I keep a Studio running?
Keep it warm, for up to 7 days or for good. If it stops for any reason, it is started again.
Can I use my own domain and certificate?
Yes. Use your own certificate, a self signed one, or Let’s Encrypt. To give each Studio its own subdomain, add a wildcard DNS record.
Can several machines serve one set of Studios?
Yes. One orchestrator can manage others on more machines and serve every Studio from one address.
Can I script it?
Yes. Set an API token and everything the console does, including backup and restore, is one HTTP call.
Your data. Your infrastructure.