AI Concepts is where RizOS is built: a self-hosted control plane for running coding agents and a Linux dictation app that works entirely offline. Nearly twenty years keeping other people's systems running — now building my own, and writing down what actually worked.
● Available for freelance & contract work · 2 tools running daily · nothing here is a mockup
Two projects, both running every day on hardware sitting in my flat. One of them never touches the network at all.
A self-hosted control plane and a fully local desktop app — developed on real hardware and documented as they take shape.
RizOS Mission Control — v0.2, running daily on a Raspberry Pi 4.
Not a chat window: a self-hosted cockpit for dispatching scoped work to commercial coding agents in isolated worktrees.
Watch workers and terminals, review evidence, run metric-driven overnight loops, and keep API spending and service health visible from one status bar. The infrastructure is mine; the models are rented, with hard spending caps.
Every screen answers a question I ask during the loop. The repository is private for now; the source will follow when it's fit to read.
RizOS Dictation — v2.5 in development. Press a hotkey, speak, get clean text — nothing leaves the machine. STT via faster-whisper, optional local refine via Qwen2.5-1.5B. Tauri shell, Python sidecar, ships as a .deb. Linux only · clipboard-mode injection.
Every screenshot is the real thing running on my own hardware — nothing mocked.
Both products are developed through the same multi-agent harness and skill library. One rule holds the whole thing together: whoever writes the code is never the one who signs it off. Everything else is plumbing to make that rule enforceable — and to keep the orchestration, the evidence and the spend limits on my side of the wire.
Four roles, deliberately held by different models, so a mistake has to survive someone who didn't make it.
Most of the engineering here is refusal — the interesting part is what the system won't let me do.
The dashboard used to be organised around categories of data — anomalies, memory, performance, analytics. It looked busy and told me nothing. v2 is organised around the loop I actually run, and every screen answers one question I genuinely ask.
The constraint that shaped the build more than any other.
Eight composable skills · installed per project · config stays local
Running AI on your own hardware teaches you things a benchmark won't. These are the ones that cost me the most time — written down so they cost someone else less.
gfx803 was dropped from ROCm years ago, so the obvious path is closed. Ollama still reaches the card through Vulkan — but a 64K context floor pushes almost every model back onto the CPU regardless. The fix wasn't a smaller model. It was a smaller prompt.
An agent was answering slowly and rambling. I nearly spent a day comparing models. The problem was its identity file: one instruction about matching effort to the message took a simple greeting from about two minutes to ten seconds.
For security triage, a tuned bash collector cut the noise from 119 alerts to 6 — better than putting a model on the job, at a fraction of the cost. The model earns its place on judgement calls, not on filtering.
The security agent runs local-only with no cloud fallback configured. If the local model is unavailable it stops rather than quietly escalating to somebody else's API. For that job, unavailable is a safer failure than remote.
Host and network scan output was landing in a notes vault that a cloud-backed agent could read. Now it lives outside the vault with tight permissions. Multi-agent setups need a data boundary drawn on purpose, not by accident.
Names accumulate faster than software does. An audit found most of the "clan" were shell scripts, message prefixes, or plain fiction — seven were real. The scheduler is the source of truth now. If it isn't in cron, it isn't an agent.
Longer write-ups as I get to them.
Three layers. The control plane, the data and the terminals are mine; the models are a mix of local and rented, picked per job. Constraints are the interesting part — this stack has real ones.
Local where they fit — Ollama over Vulkan on an ageing consumer GPU, faster-whisper for speech, small models picked to fit the box rather than the benchmark. Commercial APIs for the heavy coding work, behind hard hourly, daily and monthly spend caps.
Two surfaces, deliberately kept apart: the development harness above, and a set of scheduled local agents for briefings, security triage and housekeeping — each with an explicit role, its own model policy, and its own data boundary.
A Tauri desktop app with a Python sidecar for dictation, and a dashboard on the Pi for everything else — reading from a plain Markdown vault, so the data outlives the tooling.
London. Nearly twenty years keeping other people's systems running: POS estates, networks, field break-fix under SLA. Now building my own tooling, and shipping it.
I started fixing PCs and small-business networks in 2007 and never quite stopped — that work still runs alongside everything else.
The formal side came next: an extended engineering year at London South Bank, then a BEng (Hons) in Computer Systems and Networks, finished with a 2:1.
Most of my career since has been field engineering — years of IT support across care facilities, then EPOS terminals, servers and switches in high-volume retail, where I also trained new engineers. More recently, field service across retail and hospitality estates: installing and configuring POS and network hardware on client sites, diagnosing faults under SLA, and handing systems over working.
The common thread is systems that aren't allowed to go down, diagnosed under time pressure, usually on someone else's site with a client watching. You learn quickly that a status light which lies is worse than no status light at all.
These days I spend my own time building software: a dictation app that runs entirely offline, and a self-hosted control plane for running coding agents. Both are on this site. Both run daily. Every screenshot is the real thing.
Networking (TCP/IP, routing, switching), Cisco routers and switches, POS/EPOS estates, hardware installation and configuration, break-fix and fault diagnosis, root cause analysis, first and second line support, SLA delivery. Windows and Linux.
Linux services, Raspberry Pi deployments, process supervision, local networking, and static hosting on Cloudflare Workers — including this site.
Python, Tauri desktop applications, local speech-to-text and LLM inference, and multi-agent orchestration across commercial coding models — with spend caps and an audit trail in front of them.
Not slogans — these are rules I've written into the systems on this site, and they hold whether or not anyone is watching.
English (fluent) · Portuguese (native) · based in London, on site or remote
I'm open to freelance and contract work — AI tooling, infrastructure, or the field engineering I've done since 2007. Happy to talk about the stack either way.