curiosity

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.

A Studio for every team, behind one address Twelve Studios on one server, one per team, most of them asleep. A visitor opens the address of the quality Studio. The orchestrator wakes it and the visitor lands in it. A Studio nobody has used for a while goes back to sleep. ONE ADDRESSexample.com/quality/RUNNING · IN MEMORYASLEEP · ON DISKORCHESTRATOR · YOUR SERVERServiceRUNNINGEngineeringASLEEPLegalASLEEPQualityASLEEPQualitySTARTINGQualityRUNNINGField opsASLEEPTrainingRUNNINGTrainingASLEEPMaintenanceRUNNINGSupplyASLEEPSafetyASLEEPSalesASLEEPPurchasingRUNNINGResearchASLEEP
A Studio for every team, behind one address Twelve Studios on one server, one per team, most of them asleep. A visitor opens the address of the quality Studio. The orchestrator wakes it and the visitor lands in it. A Studio nobody has used for a while goes back to sleep. ONE ADDRESSexample.com/quality/YOUR SERVERQualityASLEEPQualitySTARTINGQualityRUNNINGServiceRUNNINGMaintenanceRUNNINGPurchasingRUNNINGTrainingRUNNINGTrainingASLEEPEngineeringASLEEPLegalASLEEPField opsASLEEPSupplyASLEEPSafetyASLEEPSalesASLEEPResearchASLEEPRUNNING · IN MEMORYASLEEP · ON DISK

05 · Unused Studios go back to sleep

Address One, for every Studio Sleeps After a while unused Wakes On the next visit Runs on Your own servers

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.

One day of six Studios on one server Six Studios over 24 hours. Each runs while its team works and sleeps a while after the last use. One is woken by a visit in the evening. One is kept warm all day. Under them, how many run at once: five at the busiest hour, far fewer most of the day. ONE DAY ON ONE SERVER00:0006:0012:0018:00QualityServiceEngineeringLegalField opsLaunchRUNNINGAT MOST 5 OF 6 AT ONCERUNNINGASLEEPIDLEKEPT WARM
One day of six Studios on one server Six Studios over 24 hours. Each runs while its team works and sleeps a while after the last use. One is woken by a visit in the evening. One is kept warm all day. Under them, how many run at once: five at the busiest hour, far fewer most of the day. ONE DAY ON ONE SERVER00:0006:0012:0018:00QualityServiceEngineeringLegalField opsLaunchRUNNINGAT MOST 5 OF 6 AT ONCERUNNINGASLEEPIDLEKEPT WARM
  1. 01

    Each Studio runs while its team works

    A Studio starts when someone opens it and stays up while it is used.

  2. 02

    A while without use, then it sleeps

    With nobody on it for a while, the Studio stops. Its data stays where it was.

  3. 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.

  4. 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.

  5. 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.

Studios on two machines behind one address One machine is full. A second machine asks to join and is approved. New Studios go to it. The quality Studio moves from the first machine to the second, and visitors still reach every Studio at the same address. ONE ADDRESSexample.comMACHINE AFULLServiceRUNNINGLegalASLEEPSalesRUNNINGSafetyASLEEPResearchRUNNINGMACHINE BASKS TO JOINMACHINE BAPPROVEDTrainingRUNNINGSupplyASLEEPQualityRUNNING
Studios on two machines behind one address One machine is full. A second machine asks to join and is approved. New Studios go to it. The quality Studio moves from the first machine to the second, and visitors still reach every Studio at the same address. ONE ADDRESSexample.comMACHINE AFULLServiceRUNNINGLegalASLEEPSalesRUNNINGSafetyASLEEPResearchRUNNINGMACHINE BASKS TO JOINMACHINE BAPPROVEDTrainingRUNNINGSupplyASLEEPQualityRUNNING
  1. 01

    One machine fills up

    Every slot on the first server holds a Studio.

  2. 02

    Add a machine

    Install the orchestrator on more servers and scale up your deployments.

  3. 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.

  4. 04

    Move a Studio across

    The Studio stops, its data is copied to the other machine, and it starts there.

  5. 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.

Terminal
 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.

Terminal
 ORC_ADMIN_PASSWORD='choose-a-password' ORC_STORAGE="$HOME/.curiosity/orchestrator-data" curiosity-orchestrator

What you see

Terminal
 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

Read the script · Install in the README

Windows

01 · Install

Downloads the latest release, checks it and adds it to your PATH. You need Docker Desktop on the machine.

PowerShell
 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.

PowerShell
 $env:ORC_ADMIN_PASSWORD = 'choose-a-password'; $env:ORC_STORAGE = "$HOME\.curiosity\orchestrator-data"; curiosity-orchestrator

What you see

PowerShell
 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

Read the script · Install in the README

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.

Terminal
 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.

Terminal
 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

Terminal
 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.

Docker in the README

To upgrade, run the install command again. Your Studios and their data are kept.

Your first Studio

From install to a team’s Studio

  1. 01

    Sign in

    Open localhost:8080/#/manage and sign in as admin with your password.

  2. 02

    Create a Studio

    Name it, say quality. The first one takes a while, as Studio downloads once.

  3. 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.

Give every team a Studio.
Keep one address.