Your whole dev loop, in one private cloud.
Workspaces with AI agents, one-click deploys, hosting and GPUs, built to work together.
Applications / your-app
your-app Environment production ▾
Deploy · 2 commits behind yes, Deployno running… doneA cloud workspace, your repository already in it
Make a workspace from your GitHub repository and write code in the browser, or in VS Code on your own computer. Describe your app in four lines, and Oerba can build it, run it and give it an address.
Workspaces
New workspace
A place to write code, in the browser or in VS Code on your computer. It need not ever become an app.
Name
- your-app
- src
- Dockerfile
- compose.yaml
- lab.conf
- README.md
1# What the platform needs to know, as data.
2COMPOSE=compose.yaml
3HEALTH=http://127.0.0.1:8801/healthz
4TIER=small # small, medium, large or gpu
5BACKUP=data # copied every night
- Your repository, cloned
A workspace starts from your own GitHub repository, in the browser or in VS Code on your computer.
- Four lines to describe it
How it runs, where it answers, how big it may get and what to keep. Data, never run.
- Production waits for you
Oerba shows your app behind until you press Deploy. A push never changes production; a staging environment can follow its branch once its tests pass.
Claude Code, OpenCode, already in your workspace
Both coding agents come installed in every workspace: Claude Code signs in with your own Claude account, and OpenCode can run on open models served from Oerba's own GPUs.
- Start one with a word
agent claudeoragent opencode, in the browser's terminal or in VS Code's. - It keeps working when you leave
Each agent runs in a session of its own: close the tab and it carries on, and the same command picks it up again.
- It knows how to ship here
Every workspace carries a deploy guide both agents are pointed at, and
lab detect, which reads your project and drafts itslab.conf. - Open models on our GPUs
With a token from the platform, OpenCode lists the open models running on Oerba's RTX 5090s, kept current each time the workspace starts.
Deploys that look before they leap
Every deploy shows the commits it will ship and asks first. Then it waits for your app to answer, and puts the last version back if it doesn't.
- The check comes first
Preview changes shows what a deploy would bring, before anything moves.
- Tested before it ships
Name your tests in one line, and every commit is built and tested on the lab's own runner. A commit whose tests fail can't be deployed.
- Roll-back without a button
A deploy is not done until your app answers at its health address. If the new version doesn't, the old one comes straight back.
- Environments from a branch
Make staging, or any name, from a branch: a copy of every part beside production, at its own address, with its own data, seeded by your own script. It follows its branch by itself once the tests pass.
- Every part, one press
An app in parts, say a web part and a worker, deploys in order with Deploy all, and stops at the first that fails.
your-app · web
ClosePushing never deploys. Production changes only when someone presses Deploy.
main is 2 commits ahead of production.Production is main.
- Add sharing links tests passeda1c4e09 · you · on main, not deployed
- Fix the week view tests passed5b72f3d · you · on main, not deployed
- Start the week on Monday tests passed8e41d07 · you
Deployed a1c4e09, 2 commits
An address of its own. A copy every night.
Your app answers at an address of its own, on the private network. Its data is copied every night, checked against the original, and opened again every Sunday to prove it comes back.
- all dayYour app's datawhatever BACKUP names
- 03:30Tonight's copychecked against the original
- 05:00A second driveencrypted
- 06:00Off siteencrypted
- SundaysOpened againread back, databases and all
- An address of its own
/apps/your-app/, for everyone invited to the private network, from the moment it is deployed. - Every night
What your manifest names, copied at 03:30 while you sleep, and checked against the original.
- Proved, not assumed
Every Sunday the copies are read back, databases and all, so a restore is something that already worked.
A GPU on call. The CPU as a fallback.
Send your app's slow stage to a worker on an NVIDIA RTX 5090. When the card is busy, the work runs on the CPU instead, and says so.
- Your code, in a second role
Your app's own package runs as its worker, and your app decides what to send it.
- Falls back by itself
If the card is busy or away, the job finishes on the CPU, slower and saying so.
- One line to ask for it
TIER=gpuin your manifest.
Turns a recording into sheet music.
- InA recordinguploaded on its page
- The heavy stagesOn the GPU workeror on the CPU, when the card is busyRTX 5090
- OutSheet musicback on its page
Invited people only. Every app walled off.
Apps answer only on Oerba's private network, so there is no login page to attack. Inside, each one runs walled off from everything but the internet.
- No login page to attack
The private network is the login. Strangers get this page, and nothing behind it.
- Walled off
No extra privileges, its own ceiling on CPU and memory, and the internet but nothing else on the network.
- Only what is yours
A developer sees their own apps and workspaces, and their organisation's, and nobody else's.
Who can reach it
People invited to the private network
Strangers, who get this page
What it can reach
The internet
The rest of the network
Anybody else's apps
Bring your team. Its apps in one place.
An organisation holds a team's apps and workspaces together, and its repositories are the team's GitHub account's. Its admins say who is in it; its members deploy its apps, make environments of them, and each keeps a workspace of its own. Ask for one with your invitation.
Applications / Organisations / acme
acme
2 members3 members · its repositories are github.com/acme's
Members
ana@githubadmin· you
sam@githubmember
lee@githubmember
Their GitHub login, as someone@github.Adds lee@github to acme as a member.
Applications
acme-shop/apps/acme-shop/
acme-blog/apps/acme-blog/
Create an app for acme →
Workspaces
acme-shop· runningShare with…
acme-api· sam's, shared with you
- Members by GitHub login
An admin adds a teammate by their GitHub login and makes another admin. Someone removed can no longer deploy or archive its apps.
- A workspace each
Every member keeps their own workspace of the team's repositories, and Share lets a teammate use yours.
- The team's apps
Every member deploys the organisation's apps and makes environments of them, and its page lists them all.
Four sizes. One line to change.
Pick the most of the machine your app may use, and change it later.
-
Small
0.5 CPU · 512 MB
A static site or a small API.
By invitation
-
Medium
2 CPU · 2 GB
Most web apps, or a JVM, with a database beside it.
By invitation
-
Large
4 CPU · 6 GB
Heavy requests, large files.
By invitation
-
GPU RTX 5090
4 CPU · 6 GB
Large, plus a worker on the GPU for the heavy work.
By invitation
Want in?
Oerba is by invitation, for people building something. Write with your GitHub account and what you would like to make.
Already invited? Switch Tailscale on and open the address in your invitation.