What source-available means for orchestrat

orchestrat is public under the Elastic License 2.0. What that lets you do, the one thing it rules out, and why I picked a license that leaves room for hosted plans later.

orchestrat went public on Thursday night as v0.1.0. You run it yourself: one Docker image next to PostgreSQL, a CLI on npm that connects your coding agents, and docs at orchestrat.dev/docs. It's free, and the code is on GitHub.

It's also source-available, not open source. The code is under the Elastic License 2.0 (ELv2), which lets you do almost anything with it except one thing. That label confuses people, so here's what it actually means for orchestrat, and why I picked it.

What you can do

ELv2 gives you the source and the right to:

  • use orchestrat for yourself, your team or your company, for free
  • read it, change it and run your own fork
  • build it into your own products, as long as the license and notices go with it
  • self-host it wherever you want: your laptop, a VPS, Railway, a Raspberry Pi

There's no license key and no paid tier. A self-hosted instance doesn't send anything back to me. Your tasks, documents and chats live in your own PostgreSQL database.

The one thing you can't

You can't offer orchestrat to other people as a hosted or managed service. Running it for your own company is fine. Selling "orchestrat in the cloud" to other companies isn't.

The only other rule is that the license and copyright notices have to stay where they are.

Why not open source

No open source license could give me that last rule. The Open Source Definition doesn't let a license restrict what the software is used for, and running it as a service is a use. That's why ELv2 isn't approved by the Open Source Initiative, and why I call orchestrat source-available instead. The difference matters to a lot of developers, and I'd rather use the right word.

The closest open source option was the AGPL. It lets anyone host the software as long as they publish their changes. It also pulls any product that builds it in under the AGPL, which would have ruled out one of the things I wanted to allow.

Why ELv2

I might offer a hosted orchestrat later, with business and enterprise plans for teams that don't want to run their own server. I haven't decided. But I wanted to keep that option open, and I didn't want to find out later that someone else had taken it first with my own code.

ELv2 does exactly that. Anyone can run orchestrat for themselves, change it and ship it inside their own products. Only I can sell it as a hosted service. Elastic wrote the license in 2021 for the same reason, after cloud providers started selling Elasticsearch as a service.

It's also why contributions need a signed contributor license agreement. Without one, code someone contributes would reach me under ELv2 too, with the same limit as everyone else: I couldn't use it in a hosted version. The CLA lets contributions go wherever orchestrat goes.

What it takes to run

Self-hosting should mean one thing to run, so v1 cut the last outside service. Sign-in used to go through Supabase. Now the API has its own accounts: email and password, the first account on a new server becomes the admin, and signing up after that takes an invite link. There's no email server to set up. Admins create accounts and reset passwords with a command inside the container.

Getting it running is five commands:

git clone https://github.com/armanghev/orchestrat.git
cd orchestrat/deploy
docker compose run --rm --no-deps -T orchestrat init > .env
docker compose up -d
docker compose logs orchestrat

init writes fresh secrets into .env, and the log prints a link for creating the first account. Then, from the folder your agents work in:

npx @orchestrat/cli setup --server http://localhost:8801

The server is one Node.js process that runs its own database migrations when it starts. At idle it uses about 75 MB of memory, and PostgreSQL about 25 MB. My own instance runs on Railway, from the same public image as everyone else's.

What's next

The next release is mostly the things that didn't make v1:

  • The macOS app, moved over to the new built-in accounts. It's in the repo, but not in the release yet.
  • Signing in with GitHub, and email for invites and password resets.
  • The CLI on Windows. Today it runs on macOS and Linux.

Hosted plans, if they happen, would come later. Either way, running it yourself is how orchestrat works today, and it's how I use it every day.

If you've got Docker and more than one coding agent, it takes about five minutes to try. The quickstart is at orchestrat.dev/docs and the code is on GitHub. If it breaks, open an issue or email me at arman@orchestrat.dev.