Ozko, small businesses' software, kept running and in their name
Plenty of small businesses don't hold the keys to their own software: the agency or freelancer who built it does. Ozko moves every account into the owner's name, then runs the app for them: hosting, deploys, backups, monitoring and changes, with the owner approving from a dashboard or WhatsApp. I'm building it as owner and technical lead. The landing page, the owner dashboard and the hosting behind them went live in October 2026, and this site runs on it.
What an owner sees
The dashboard screens show a demo project with sample data, not a real client. Tap any screen to see it larger.
The promise
Always running, always yours. The landing page shows the loop in one card: a change is ready, the checks passed, the owner approves it from WhatsApp.
Project home
One screen per project: is it running, what needs the owner, what's live now and what's planned next.
Keys and accounts
Every account the business runs on, whether it's already in the owner's name, what Ozko can do with it, and what happens if they leave.
Health and backups
Uptime checked from four regions, last night's backup, the last restore test and the certificate, in plain words.
How much detail
Each person picks how much detail they want, from plain to technical, and every screen explains itself at that level.
Decisions behind it
The owner owns it from day one
Code, domain and store accounts move into the owner's name before anything else. Leaving Ozko means taking what's already theirs.
Writing code and deploying are separate keys
One GitHub app writes code but can't touch CI or secrets; the other can only read, to deploy. Whatever writes the code can't ship it.
The approval gate is the deploy
Nothing goes live until the owner approves and Ozko starts the deploy, so the gate holds even on GitHub's free plan.
The dashboard holds no keys
It only reads status snapshots that collectors push every minute, and the key they push with can write into one folder and nothing else.
Actions from a closed list
The dashboard records what someone wants; a runner on a server closed to the internet pulls each action, checks it against its own list, and does it.
A failing test means nothing to ship
Tests run inside every build, and a health check must pass before a new version replaces the running one.
- Next.js
- React
- PostgreSQL
- Tailwind
- Coolify
- Traefik
- Docker
- restic
- Tailscale
- Hetzner
- Better Stack
Dashboard screens show a demo project with sample data. No client is shown or named.