Portfolio
CashPilot Android
Android companion agent for CashPilot. Monitors passive income apps (Honeygain, EarnApp, Grass, etc.) running on your phone and reports their status to the fleet dashboard. No root required.
Key Features:
- Detects 17 passive income Android apps via NotificationListenerService
- Per-app network bandwidth tracking (tx/rx)
- Periodic heartbeat to CashPilot server for unified fleet view
Tech Stack: Kotlin, Jetpack Compose, Ktor, Material 3
Runtipi App Store
Runtipi community app store with 15 self-hosted applications — Telegram Archive, GenieACS, LynxPrompt, Pumperly, CashPilot, and more. One-click install for Runtipi home servers.
A curated collection of my open-source projects, packaged as one-click installable apps for the Runtipi home server platform. Each app includes a docker-compose configuration and metadata for seamless deployment.
Key Features:
- 15 self-hosted applications ready for one-click install
- Pre-configured docker-compose setups for each app
- Covers media, backups, networking, AI tools, and more
Tech Stack: Docker, Docker Compose, Runtipi
GenieACS Ansible
Ansible Galaxy collection for managing GenieACS TR-069 ACS instances. Dynamic inventory plugin that groups CPE devices by manufacturer, model, firmware, and tags. Modules for device tasks, presets, and provisions.
Key Features:
- Dynamic inventory — auto-discovers CPEs and groups by manufacturer/model/firmware/tags
- Device task module — reboot, firmware push, get/set parameters fleet-wide
- Preset and provision CRUD — manage GenieACS config as code
- Zero dependencies — uses Python stdlib only
Tech Stack: Python, Ansible Galaxy Collection
🏆 Most Impactful Project 🏆
GenieACS - Docker
Production-ready Docker container and Kubernetes deployment tools for GenieACS, an open-source TR-069 ACS (Auto Configuration Server)
It is currently used by thousands of ISPs around the world. Still, I feel nostalgic when thinking about my journey with it:
- I was the first person to create a fully working guide for Ubuntu installation in 2015
- I was the first person to run GenieACS dockerized back in 2016.
- I was also the first person to run GenieACS in CentOS-based distros, which was a requirement for one of my clients back then.
Key Features:
- 🐳 Production-ready Docker images for GenieACS
- ☸️ Official Helm chart for Kubernetes deployments
- 🔄 Automated chart releases via GitHub Actions
- 🔒 Security best practices with non-root user
- 📊 Health checks and monitoring support
- 📦 Multi-architecture support (amd64, arm64)
Tech Stack: Docker, Kubernetes, Helm
⭐ Featured Projects
Awesome Spain
A curated list of open source software that specifically supports Spain — autonomous communities, provinces, and cities.
My most starred repository. A comprehensive collection of open source tools, libraries, and services tailored for Spain's administrative, legal, and geographic landscape.
Key Features:
- 🇪🇸 Software supporting Spanish administrative divisions
- 📋 Organized by category: government, taxes, geography, health, and more
- 🔗 Community-maintained with regular updates
Tech Stack: Markdown, Community-curated
Awesome Europe
A curated list of open source software for Europe — institutions, regulations, standards, and cross-border infrastructure.
The European counterpart to awesome-spain. Covering EU-wide regulations, standards, and infrastructure tools.
Key Features:
- 🇪🇺 Software supporting European institutions and regulations
- 📋 Cross-border infrastructure and standards
- 🔗 Community-maintained
Tech Stack: Markdown, Community-curated
Telegram Archive
Own your Telegram history with automated, incremental backups and a local web viewer that feels just like the real app. Docker-ready with support for public chat sharing.
Recent vibe-coded project. It has become the de-facto standard to backup Telegram in your own server.
Key Features:
- ✨ Incremental backups - only downloads new messages
- 📅 Configurable cron schedule
- 🐳 Docker-ready deployment
- 🌐 Web viewer with Telegram-like UI (mobile-friendly)
- 🔐 Restricted viewer for sharing specific chats
- 🎵 Voice/audio player built-in
- 📤 Export chat history to JSON
Tech Stack: Python, Docker, Telethon
VPN Bypass
macOS menu bar app to bypass VPN for specific domains and services. Route traffic intelligently when your corporate VPN is too aggressive.
Born out of frustration with corporate VPNs that route everything through the tunnel. This lightweight menu bar app lets you selectively bypass the VPN for specific domains — streaming, personal services, whatever you need.
Key Features:
- 🍎 Native macOS menu bar app
- 🔀 Selective domain-based VPN bypass
- ⚡ Lightweight and fast — no performance impact
- 🍺 Installable via Homebrew
Tech Stack: Swift, macOS
LynxPrompt
Self-hosted & federated platform for AI IDE/Tools Rules and Commands via WebUI & CLI — Generate, browse, store, share AGENTS.md, CLAUDE.md, and more.
A platform I built for the growing AI-assisted development community. Think of it as a hub for sharing and discovering AI IDE configuration files — the rules that make tools like Claude Code, Cursor, and Windsurf work better.
Key Features:
- 🌐 Web UI for browsing and managing prompt rules
- 💻 CLI tool for fetching rules directly into your project
- 🔄 Federation support between instances
- 🐳 Self-hostable with Docker
- 🍺 CLI installable via Homebrew
Tech Stack: TypeScript, Node.js, Docker
LynxPrompt VS Code
VS Code extension for LynxPrompt — browse, pull, and manage AI configuration files (AGENTS.md, CLAUDE.md, .cursorrules) directly from your editor.
The companion extension that brings the LynxPrompt platform into your IDE. No need to leave VS Code to find and apply AI rules — search the registry, preview files, and pull them into your project with a single click.
Key Features:
- 🔍 Browse and search LynxPrompt registries from the sidebar
- 📥 Pull AI config files directly into your workspace
- 📋 Preview AGENTS.md, CLAUDE.md, .cursorrules before applying
- ⚙️ Configure custom LynxPrompt server instances
Tech Stack: TypeScript, VS Code Extension API, esbuild
LynxPrompt Action
GitHub Action to sync, validate, generate, and diff AI IDE configuration files with LynxPrompt. Supports AGENTS.md, CLAUDE.md, .cursor/rules/, and more.
The CI/CD piece of the LynxPrompt ecosystem. This GitHub Action automates the synchronization and validation of AI IDE configuration files in your repositories, ensuring your team's prompt rules stay consistent and up to date across all projects.
Key Features:
- 🔄 Sync AI config files from LynxPrompt registries on every push or PR
- ✅ Validate AGENTS.md, CLAUDE.md, .cursor/rules/ against your standards
- 📝 Generate configuration files from LynxPrompt templates
- 🔍 Diff changes to AI config files in pull request comments
Tech Stack: TypeScript, GitHub Actions, Node.js
GenieACS MCP
A tiny bridge that exposes any GenieACS instance as an MCP v1 (JSON-RPC for LLMs) server written in Go. Enables LLMs to interact with network infrastructure.
I just released it in the same month MCP became a thing, just to test the protocol out. But still, useful for GenieACS operators.
Key Features:
- 📡 Expose GenieACS data as MCP resources
- 🔧 Invoke actions on CPE devices through GenieACS
- 🤖 LLM-friendly JSON-RPC interface
- 🐳 Docker support
Tech Stack: Go, JSON-RPC, Docker
GenieACS Services
Systemd and Supervisord service files for GenieACS processes. The recommended way to deploy GenieACS in production environments.
Used by the GenieACS-Docker repository, but also useful in case you want to deploy it the ol' style (VMs)
Tech Stack: Shell, Systemd, Supervisord
Paperless Telegram Bot
Manage Paperless-NGX documents entirely through Telegram — upload, search, tag, and organize your paperless archive on the go.
I use Paperless-NGX daily and wanted a way to quickly upload and search documents from my phone without opening a browser.
Key Features:
- 📄 Upload documents directly via Telegram
- 🔍 Full-text search across your archive
- 🏷️ Tag and organize from chat
- 🐳 Docker-ready deployment
Tech Stack: Python, Docker
Pumperly
Open-source fuel & EV route planner. Real-time prices across enabled countries. Self-hostable.
A route planner that actually considers fuel prices along your route, not just the shortest path. Supports both traditional fuel and EV charging stations.
Key Features:
- ⛽ Real-time fuel price comparison along routes
- 🔌 EV charging station integration
- 🗺️ Smart detour calculation for cheaper fuel
- 🐳 Self-hostable with Docker
Tech Stack: TypeScript, Node.js, Docker
Pumperly Android
Official Android app for Pumperly. WebView shell wrapping pumperly.com. Kotlin, GPL-3.0.
Native Android companion app for Pumperly, providing a dedicated mobile experience via a lightweight WebView wrapper around the Pumperly web application.
Key Features:
- 📱 Native Android experience for Pumperly
- 🌐 WebView shell wrapping pumperly.com
- ⚡ Lightweight and fast
- 🔓 Open-source under GPL-3.0
Tech Stack: Kotlin, Android
Wayback Archive
Download complete websites from the Wayback Machine with full asset preservation for offline viewing.
When you need to preserve a website exactly as it was — images, CSS, JavaScript, everything — this tool downloads it all from the Wayback Machine and reconstructs it locally.
Key Features:
- 📥 Full website download from Wayback Machine
- 🖼️ Complete asset preservation (images, CSS, JS)
- 📁 Organized local file structure
Tech Stack: Python
Telegram Delay Channel Cloner
Telegram Bot that copies content from one channel to another after a specified delay. Perfect for content scheduling and cross-posting.
A friend asked me about the possibility of building something like this for his paid channel. In the end, he didn't use it, but I open-sourced it.
Tech Stack: Python
Telegram SLSKD Local Bot
Automated music discovery and download via Telegram bot. Resolves metadata from Spotify, searches and downloads FLAC from Soulseek (slskd), and organizes your library.
My personal music pipeline: send a Spotify link to the bot, it finds the FLAC version on Soulseek, downloads it, and organizes it into my library automatically.
Key Features:
- 🎵 Spotify metadata resolution
- 🔍 Automatic Soulseek FLAC search & download
- 📁 Library organization
- 🐳 Docker-ready
Tech Stack: Python, Docker
SLSKD Transform
Transform your MP3 or lossy files into FLAC by downloading from other peers via SLSKD (not upsampling, but genuine high-quality sources).
I simply hate MP3 🙃
Tech Stack: Python
Secciones Nacionalidades (Foreign Insight)
WebApp that provides interactive insights about nationalities in Spain, using official data from the Instituto Nacional de Estadística (INE).
Built as a unified project to download, process, and explore census-section level data (secciones censales) and population by nationality. It had quite an impact for various clients back in 2016-2019.
Key Features:
- 📊 Interactive visualization of nationalities across Spanish census sections
- 🏛 Uses official INE data for reliability and comparability
- 📥 Tools to download and preprocess population and sectioning data in KML format
- 🔁 Designed for annual updates
Tech Stack: R, Shiny, INE open data
GitHub Toggle All Details
Chrome/Firefox Extension that automatically toggles all hidden details on GitHub pages. Particularly useful when dealing with CI/CD outputs that create hundreds of collapsed sections.
I developed it for my mental sanity in a past job. But I open sourced it for the benefit of poor reviewers.
Tech Stack: JavaScript
Duplicacy CLI Cron
Duplicacy CLI Docker container with a minimal environment and a working crond, designed so you can run scheduled backups from multiple locations to multiple different storages using a single container.
People went a bit crazy saying "why don't you pay the project?" and I honestly understand them, but I mean, it even involves quite a lot of work to set up this.
Key Features:
- 🐳 Minimal Duplicacy CLI image with cron enabled
- 🕒 Cron-based scheduling for automated backups
- 📂 Supports backing up multiple source paths to multiple storage backends from one container
- 🧩 Simple integration via docker-compose for easy deployment
Tech Stack: Shell, Docker, Cron
Duplicacy Container
Runtime image and Helm chart for running a production-friendly Duplicacy stack on Kubernetes, with backup CronJobs, Prometheus metrics, and optional Web UI support.
I split the Kubernetes packaging out of the exporter repo so the runtime image, shared chart, and optional web layer could live in a repo that actually matches the scope of the stack.
Key Features:
- Helm chart for the full Duplicacy stack
- Dedicated runtime image for Kubernetes-native backup jobs
- Built-in wiring for duplicacy-exporter metrics
- Optional generic Web UI pod support
Tech Stack: Helm, Kubernetes, Docker, Shell
Jellyfin Quality Gate
Jellyfin plugin to restrict users to specific media versions based on path-based policies.
Built for my home media server to control which quality versions different users can access.
Tech Stack: C#, Jellyfin Plugin API
Smart Covers
Jellyfin plugin for cover-image extraction for books, audiobooks, comics, magazines, and music libraries with online fallback via Open Library & Google Books.
Extracts embedded cover images from media files and fetches them from online sources when needed. Supports a wide range of formats including PDF, ePub, CBZ/CBR, and audio files.
Key Features:
- 📚 Extracts cover images from books, audiobooks, comics, and magazines
- 🌍 Online fallback via Open Library & Google Books
- 🎵 Music library cover support
- 📦 Supports PDF, ePub, CBZ/CBR, and audio formats
Tech Stack: C#, Jellyfin Plugin API
Audio Transcode Watcher
Automated multi-format audio transcoding service with real-time file watching and lyrics fetching.
TLDR; I hate tdarr, sorry. Nobody's perfect.
Tech Stack: Python
ePub Lang Merger
Web application to merge two ePub files in different languages into a single bilingual ePub, arranged sequentially.
Truly old masterpiece from 2015. Lots of friends which were having the same problem to learn a language were using it back in the day, hosted at times in my computer. Time flies
Tech Stack: R
Router Express
WebApp to autoconfigure TR069 and DHCP66 services for all the entire network of an ISP. Development of autoconfiguration services for Ethernet, ADSL and Voice client routers.
Final Project (2015) at University. My first real-world project. Professors were amazed and at the same time enraged that I would build this in a simple scholarship program (The company really took advantage of it).
Key Features:
- 🌐 TR069 and DHCP66 autoconfiguration services for ISP networks
- 📊 R-based WebApp with Python scripts for complete automation
- 🎫 Automatic client registration in ticket database and Radius servers
- 🔗 Integration with principal ISP management software
📚 Academic project documentation
Tech Stack: R, Python, TR069, DHCP66
Cloud Tests Velero
Academic project (dissertation) focused on disaster recovery for Kubernetes in the cloud, using Velero to back up and restore cluster resources and persistent volumes across two cloud providers.
GCP is really faster than AWS, who would have thought...
Key Features:
- ☁️ Comparative Disaster Recovery testing across two cloud providers
- 🛟 Uses Velero to back up and restore Kubernetes cluster state and persistent volumes
- 🧪 Reproducible test setups to measure RTO and partially RPO
- 📊 Analysis scripts to process results and evaluate DR performance
Tech Stack: Kubernetes, Velero, AWS EKS, GKE, R
Docker Templates
Unraid Community Applications templates for drumsergio Docker images. One-click installation of 20+ containers from the Unraid CA store.
The template repository that powers all my Docker images on Unraid. Add it once to Community Applications and get instant access to GenieACS, Telegram Archive, CashPilot, Pumperly, and many more.
Tech Stack: XML, Unraid CA
🏠 Home Assistant Integrations
Duplicacy HA
Home Assistant custom integration for monitoring Duplicacy backups via Prometheus exporter. Track backup status and health directly from your HA dashboard.
Key Features:
- 📊 Real-time Duplicacy backup monitoring
- 🔗 Prometheus exporter integration
- 📦 HACS-compatible installation
Tech Stack: Python, HACS
GenieACS HA
Home Assistant custom integration for GenieACS TR-069 router management. Monitor and manage your CPE devices from Home Assistant.
Key Features:
- 📡 TR-069 device monitoring in Home Assistant
- 🔧 GenieACS API integration
- 📦 HACS-compatible installation
Tech Stack: Python, HACS
CashPilot HA
Home Assistant custom integration for CashPilot passive income monitoring. Track your bandwidth-sharing earnings from your dashboard.
Key Features:
- 💰 Passive income tracking in Home Assistant
- 📊 Earnings dashboard integration
- 📦 HACS-compatible installation
Tech Stack: Python, HACS
Pumperly HA
Home Assistant custom integration for Pumperly fuel and EV charging price tracking. Get real-time fuel prices directly in Home Assistant.
Key Features:
- ⛽ Real-time fuel price sensors
- 🔌 EV charging station price tracking
- 📦 HACS-compatible installation
Tech Stack: Python, HACS
🔗 n8n Community Nodes
n8n-nodes-cashpilot
n8n community node for CashPilot passive income monitoring. Query earnings, device status, bandwidth stats, and proxy health across your entire fleet — with 22 operations and 4 triggers for real-time alerts.
Key Features:
- 💰 22 operations covering earnings, devices, containers, and proxies
- 🔔 4 trigger nodes for earnings changes, device offline, and container alerts
- 📊 Fleet-wide passive income automation workflows
Tech Stack: TypeScript, n8n
n8n-nodes-pumperly
n8n community node for Pumperly fuel and EV charging price data. Search stations, compare prices, and automate refueling alerts — with 8 operations and 1 trigger.
Key Features:
- ⛽ 8 operations for fuel stations, prices, and EV chargers
- 🔔 1 trigger node for price change alerts
- 📍 Location-based station search and price comparison
Tech Stack: TypeScript, n8n
n8n-nodes-lynxprompt
n8n community node for LynxPrompt AI configuration blueprints. Manage templates, prompts, and AI tool configs programmatically — with 11 operations and 2 triggers.
Key Features:
- 🤖 11 operations for blueprints, templates, and prompt management
- 🔔 2 triggers for blueprint creation and update events
- 📋 Automate AI assistant configuration workflows
Tech Stack: TypeScript, n8n
n8n-nodes-genieacs
n8n community node for GenieACS TR-069 device management. Provision, monitor, and configure CPE devices at scale — with 24 operations and 2 triggers.
Key Features:
- 📡 24 operations for devices, presets, provisions, files, faults, and tasks
- 🔔 2 triggers for device events and fault alerts
- 🔧 Full TR-069 ACS automation for ISP workflows
Tech Stack: TypeScript, n8n
n8n-nodes-telegram-archive
n8n community node for Telegram Archive chat backup management. Monitor backups, search messages, and automate archive workflows — with 11 operations and 1 trigger.
Key Features:
- 💬 11 operations for chats, messages, media, and backup status
- 🔔 1 trigger node for new backup completion events
- 🔍 Search and export Telegram message history
Tech Stack: TypeScript, n8n
n8n-nodes-way-cms
n8n community node for Way CMS web content management. Manage pages, posts, media, and site settings programmatically — with 20 operations.
Key Features:
- 📝 20 operations for pages, posts, media, users, and settings
- 🌐 Full CMS content lifecycle automation
- 📦 Bulk content import and export workflows
Tech Stack: TypeScript, n8n
📊 GitHub Stats
- Total Public Repositories: 55+ active projects
- Primary Languages: Python, TypeScript, Go, Docker, Shell, R, C#
- Focus Areas: DevOps, Cloud Infrastructure, Automation, Media Processing, Telegram Bots, AI Tools