A private self-hosted document archive with AI extraction and expiry reminders.
Problem
Contracts, invoices, and documents with a validity date (insurance policies, inspections, IDs) get lost between folders, email, and paper, and nobody tracks when something is about to expire.
Solution
Muninn archives documents, uses AI (Claude or Codex CLI, or the Anthropic API — local extraction isn't there yet on this hardware) to pull out key data, makes them full-text searchable, and sends advance and recurring reminders before expiry over Telegram.
What this proves
AI extraction over sensitive personal documents, handled safely on a self-hosted server.
Main capabilities
automatic data extraction from documents, full-text search with a highlighted match preview, expiry alerts and recurring reminders, duplicate document detection, Telegram notifications, documents and data stay on your own server
Current status
Actively used personal archive with source code public on GitHub.
Self-hosted
FastAPI
React
SQLite
Docker
Technology and architecture: Self-hosted, FastAPI, React, SQLite, Docker.
A self-hosted script catalog with AI generation, a sandbox, and remote execution.
Problem
Scripts and automation tools on homelab servers tend to scatter across dozens of folders over time, with no real overview, description, or change history.
Solution
Sindri catalogs scripts with full-text search that includes content, optional AI generation/review, isolated sandbox testing, and remote execution over SSH.
What this proves
Security thinking — sandboxing, isolation, and controlled remote code execution.
Main capabilities
full-text search across script content, import from the filesystem and remote machines over SSH, optional AI generation and review, isolated sandbox testing, content history with rollback, ~119 built-in scripts and reference cheatsheets, Slovak and English
Current status
Actively used self-hosted tool with source code public on GitHub.
Self-hosted
FastAPI
React
SQLite
Docker
Technology and architecture: Self-hosted, FastAPI, React, SQLite, Docker.
Self-hosted AI notifier for home cameras with Telegram alerts.
Problem
Common NVR setups either flood you with alerts on every motion, or require an expensive cloud AI service to figure out what actually happened.
Solution
Camera AI reacts to Hikvision camera events, locally recognizes people, vehicles, license plates, and faces (no cloud), and sends only the relevant photo over Telegram.
What this proves
Edge AI inference (ONNX, local face and license-plate recognition) on low-power hardware with no cloud dependency.
Main capabilities
local license-plate recognition, local face recognition (opt-in), Telegram photo alerts, multiple cameras at once, Frigate-style review UI, runs on Orange Pi/low-power ARM64
Current status
Actively used home system, v1.0.0 released on GitHub with automated tests.
Self-hosted
FastAPI
ONNX
SQLite
Docker
Technology and architecture: Self-hosted, FastAPI, ONNX, SQLite, Docker.
A local, sandboxed AI agent that proposes and (with human approval) executes shell commands — for ordinary homelab hardware, not a datacenter.
Problem
Local AI agents either never execute a command at all, or run it directly on the real machine with no isolation and no record of what happened — and almost all of them assume a powerful GPU.
Solution
brokkr runs proposed commands inside a Docker sandbox that holds even when the model gets it wrong, with a complete audit log of what was proposed, decided, and actually executed. Developed and tested on a laptop with 6GB of VRAM.
What this proves
Security-conscious AI tooling design — sandboxing as a real boundary, not just one of several layers, and a real security gap found and fixed through ordinary use, not just in theory.
Main capabilities
Docker sandbox as a real security boundary, complete audit log of proposal/decision/execution, targets ordinary homelab hardware (6GB VRAM), CI with tests, lint, and CodeQL security scanning
Current status
Actively used and tested, source code public on GitHub under Apache-2.0.
Self-hosted
Docker
Python
Security
Technology and architecture: Self-hosted, Docker, Python, Security.
A self-hosted personal chronicle built for collaboration with an AI coding agent — a full-text-searchable journal that writes itself.
Problem
A normal AI conversation has history, but it's locked inside the provider's own app — you can't really search it, and once the session ends it effectively disappears into the next one.
Solution
Mímir takes what would already be flowing through an AI assistant during ordinary work and stores it itself as a full-text-searchable daily log — plus a separate archive of full terminal history (with sensitive-data redaction), a cross-source timeline per project (journal + git commits + terminal), and an AI-generated handoff briefing for a project.
What this proves
Designing tools for genuine human+AI collaboration, not just an app a human types into by hand — including the security model (quarantine for sensitive data, a separate password required to delete anything).
Main capabilities
full-text search via FTS5, AI recall/digest/handoff briefing, terminal history archive with sensitive-data quarantine, cross-source project timeline (journal + git + terminal), separate admin password required to delete data
Current status
Used daily as a personal tool, source code public on GitHub under Apache-2.0.
Self-hosted
FastAPI
React
SQLite
Technology and architecture: Self-hosted, FastAPI, React, SQLite.
A Galaxy S20 Ultra turned into a full Linux/pentesting handheld — a custom kernel port and native Android desktop mode.
Problem
This phone (Exynos S20 Ultra, z3s) has no official NetHunter support, and the only older community kernel for this chip is from 2023, targets Android 13, and is only partially functional — a working kernel for the current LineageOS 23/Android 16 branch was missing.
Solution
A custom kernel port with fixed Bluetooth/USB/networking bugs, a native Kali NetHunter chroot, and a working native Android desktop mode on an external monitor — not Samsung DeX, actual AOSP windowing.
What this proves
Kernel-level Linux/Android engineering with no existing documentation to lean on — cross-compilation, boot image patching, SELinux/Magisk, blind systems diagnostics.
Main capabilities
custom kernel with fixed BT/USB/NCM bugs, native Kali chroot with SSH access, Android desktop mode on an external monitor, permanent USB HID/ADB/serial gadget, a complete field manual
Current status
Actively used personal handheld, source code and build environment public on GitHub.
Linux kernel
Android
NetHunter
Reverse engineering
Technology and architecture: Linux kernel, Android, NetHunter, Reverse engineering.
Remote sudo approval over WebAuthn/FIDO2 — a physical key, Face ID, or Touch ID instead of a TOTP code.
Problem
Approving sudo remotely (from an iPad/iPhone) usually means reading and typing a TOTP code by hand. Commercial SSH clients with FIDO2 agent-forwarding support are either paid or not reliably documented for this.
Solution
A self-hosted WebAuthn backend that Safari on iOS/iPadOS can talk to natively — no app, no subscription. A push notification with a direct link starts the WebAuthn ceremony automatically on open; a PAM script on the server waits for approval and always falls back to TOTP on any failure or timeout.
What this proves
Working with WebAuthn/FIDO2 cryptography, PAM integration, and security tradeoffs (graceful fallback, authenticating the registration endpoint itself) instead of a weaker bearer-token approach.
Main capabilities
approve via physical FIDO2 key, Face ID, or Touch ID, push notification with a direct link via ntfy, PAM sufficient/fallback to TOTP on any failure, no app or subscription — plain WebAuthn in Safari
Current status
Actively used across two machines in the homelab, source code public on GitHub.
FastAPI
python-fido2
WebAuthn
PAM
Docker
Technology and architecture: FastAPI, python-fido2, WebAuthn, PAM, Docker.