Sheet 04 · Ozko · 2026

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.

RoleTechnical Product Lead
ScopeLanding page, owner dashboard, hosting platform
StackNext.js, PostgreSQL, Coolify
5apps running on it
The owner's side

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.

Under the hood

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.