Mario Leal

I build things for my own home lab and desktop. Almost everything here runs on hardware at home, near Porto: a self-hosted server with SSO, a vault and a GitOps deploy pipeline; a local AI companion; and a Linux desktop with a shell and window decorations I designed and wrote myself.

The code lives on my self-hosted Gitea (git.clockmost.com) and is mirrored here.

Felt - a local-first AI desktop companion

Text and voice chat with a local LLM, plus an animated VRM avatar that lives on the desktop and reacts to the conversation. No cloud: the models run on my own GPUs.

repo what it is
Felt umbrella repo: architecture, design docs and decision history
felt-core the brain: FastAPI orchestrator, skill plugins, memory, local-model routing (Python)
felt-voice speech-to-text and TTS with an RVC voice model
felt-dashboard the Felt app: a React + Vite web UI
felt-tray the Linux desktop client in Rust (tao + wry web view), with mTLS client certificates
felt-animation-rust the behaviour engine, ported from Python to Rust
felt-wayland Rust GDExtension that gives Godot click-through windows on Wayland

Felt is source-available under PolyForm Strict: read it and run it for yourself, but please don't redistribute it.

Linux desktop

repo what it is
clockmost-shell my desktop shell: top bar and control center in Quickshell/QML, with a Rust KWin bridge
kwin-decoration-endfield a KWin window decoration in C++, built pixel-for-pixel from an HTML mockup
phonograph a custom Spotify UI as a Spicetify extension
endfield-design the design system all of it follows
packaging my Arch package pipeline: reusable CI with supply-chain gates (cargo-deny, cargo-vet, Semgrep, Trivy)
clockmost-desktop the full recipe for the desktop, every part written down

Home lab and services

repo what it is
homelab-platform-blueprint the reference architecture my server follows: proxy, SSO, apps, backups, monitoring
clinic-website-architecture a website a non-technical person can keep up to date, without ever touching git
rbac-search-fastapi small, fully typed FastAPI sample: search that respects roles
poe2rag, drive-rag retrieval-augmented search answered by a local LLM

Smaller things

hero-siege-filter (a reverse-engineered game loot-filter format), paissa-map (FFXIV housing on a map), AnimToVrmaConverter (Unity animations to VRM), window-hero (an idle RPG where your windows are the monsters), wayfire-peek (Alt+Tab with live thumbnails for Wayfire).

Tools I use most: Python (FastAPI, pydantic, uv), TypeScript/React, Docker Compose, Caddy, Authentik, OpenBao, Gitea Actions, Arch packaging.