Skip to content Saltar al contenido
Spain · Open to roles & freelance España · Empleo o freelance

Secure systems, end to end — from the sensor to the dashboard, hardened by design. Sistemas seguros de extremo a extremo — del sensor al panel, endurecidos por diseño.

I build systems whole — firmware, telemetry, backends, security tooling and native apps — with security as part of the design, not a patch. Available to join a team, or for freelance projects.

Construyo sistemas completos — firmware, telemetría, backend, herramientas de seguridad y apps nativas — con la seguridad como parte del diseño, no como parche. Disponible para incorporarme a un equipo o para proyectos por encargo.

View selected work Ver proyectos seleccionados

Selected work

Proyectos seleccionados

Systems built end to end, then hardened. Sistemas construidos de principio a fin, y endurecidos.

02 agrisentinel

Telemetry that trusts nothing Telemetría que no confía

A rural IoT lab that treats the sensor network itself as an attack surface. Every node signs telemetry with HMAC, sequence and nonce; the gateway validates each frame and runs range, replay, stale and rate checks before publishing. Clean data and security alerts travel over separate MQTT streams into two Grafana dashboards: agronomy and SOC.

Laboratorio IoT rural que trata la propia red de sensores como superficie de ataque. Cada nodo firma su telemetría con HMAC, secuencia y nonce; el gateway valida cada frame y ejecuta detección de rango, replay, caducidad y frecuencia antes de publicar. Los datos limpios y las alertas viajan por canales MQTT separados hacia dos dashboards Grafana: agronomía y SOC.

  • HMAC + anti-replay HMAC + anti-replay
  • 4 anomaly detectors 4 detectores de anomalía
  • Agronomy + SOC Agronomía + SOC
  • 33 tests · CI 33 tests · CI
  • Python
  • MQTT
  • InfluxDB
  • Grafana
  • Hexagonal
03 sentinel-node

Space sentinel Centinela de espacios

A multi-sensor sentinel node with ML at the edge: air quality, mmWave presence, acoustic events with TinyML and vision with ESP32-CAM. Models run on-device and publish only the verdict — raw audio and images never enter the telemetry. A coherent simulated space drives every channel and fitness functions guard the architecture.

Nodo centinela multisensor con ML en el borde: calidad de aire, presencia mmWave, eventos acústicos con TinyML y visión con ESP32-CAM. Los modelos corren en el dispositivo y solo publican el veredicto — ni audio ni imágenes crudas entran en la telemetría. Un espacio simulado coherente alimenta todos los canales y las funciones de fitness vigilan la arquitectura.

  • On-device ML ML on-device
  • Privacy by design Privacidad por diseño
  • 4 sensor channels 4 canales de sensor
  • 45 tests + fitness 45 tests + fitness
  • ESP32-S3
  • TinyML
  • MQTT
  • InfluxDB
  • Hexagonal
04 eastron-lorawan

Real-time energy Energía en tiempo real

Electrical monitoring over LoRaWAN: the meter transmits, the telemetry stack processes and consumption lands on Grafana dashboards with time-series history. It is the most direct reference for turning a physical installation into an energy-observability service.

Monitorización eléctrica sobre LoRaWAN: el contador emite, la pila de telemetría procesa y el consumo aparece en paneles Grafana con histórico de series temporales. Es la referencia más directa para convertir una instalación física en un servicio de observabilidad energética.

  • LoRaWAN uplinks Uplinks LoRaWAN
  • Time-series history Series temporales
  • Grafana dashboards Paneles Grafana
  • LoRaWAN
  • InfluxDB
  • Grafana
  • IoT
05 pyscan

Industrial radar Radar industrial

A modular network and industrial-protocol scanner that identifies Modbus, IEC-104 and S7comm, discovers hosts, detects services and can capture live traffic. Its hexagonal architecture lets new scan strategies drop in without contaminating the core.

Escáner modular de redes y protocolos industriales que identifica Modbus, IEC-104 y S7comm, descubre hosts, detecta servicios y puede capturar tráfico en vivo. La arquitectura hexagonal permite añadir nuevas estrategias de escaneo sin contaminar el núcleo.

  • 3 OT protocols 3 protocolos OT
  • 74 tests · CI 74 tests · CI
  • Live pcap capture Captura pcap en vivo
  • Python
  • Scapy
  • Textual
  • Hexagonal
06 aegis-zero-trust

Hardened access Acceso blindado

A zero-trust identity platform with a live operations console: passkeys, token rotation, a risk engine and hash-chained audit — plus a ten-scenario attack range for watching the defenses respond.

Plataforma de identidad zero-trust con consola de operaciones en vivo: passkeys, rotación de tokens, motor de riesgo y auditoría encadenada — más un laboratorio con diez ataques para observar cómo responden las defensas.

  • WebAuthn passkeys Passkeys WebAuthn
  • Hash-chained audit Cadena de auditoría
  • 10 attack scenarios 10 escenarios de ataque
  • Rust
  • Axum
  • React
  • PostgreSQL
  • Redis
07 phosphor

The file watchman El vigilante de ficheros

A desktop file-integrity monitor in Rust with an amber-CRT egui interface. It anchors an HMAC-signed SHA-256 baseline and watches a folder in real time; modifications, additions and deletions surface instantly, with native notifications and JSON/CEF export for SIEM.

Monitor de integridad de ficheros de escritorio en Rust con interfaz egui ámbar-CRT. Ancla un baseline SHA-256 firmado con HMAC y vigila una carpeta en tiempo real; cualquier modificación, alta o borrado aparece al instante, con notificación nativa y exportación JSON/CEF para SIEM.

  • Live filesystem watch Watch en vivo
  • HMAC-signed baseline Baseline firmado HMAC
  • Native egui GUI GUI nativa egui
  • JSON/CEF export Export JSON/CEF
  • Rust
  • egui
  • SHA-256
  • HMAC
  • notify

Live proof

Prueba en vivo

Watch integrity protection stop a blind overwrite. Mira cómo la protección evita una sobrescritura ciega.

MAAT As above, so below Como es arriba, es abajo

The file changes underneath the editor. Maat refuses to overwrite it blindly. El archivo cambia bajo el editor. Maat se niega a sobrescribirlo a ciegas.

A controlled second process tampers with the file on disk. Maat detects the SHA-256 mismatch, blocks the normal save, exposes the conflict through :check, and records the operator’s decision as a structured audit event.

Un segundo proceso controlado manipula el archivo en disco. Maat detecta que el SHA-256 ya no coincide, bloquea el guardado normal, muestra el conflicto mediante :check y registra la decisión del operador como evento de auditoría estructurado.

  • modal editingedición modal
  • atomic saveguardado atómico
  • external tampermanipulación externa
  • JSON / CEF auditauditoría JSON / CEF
Maat terminal editor beside a simulated attacker, showing an external-change warning and a blocked save.

More attack-driven demos live in the repositories: Más demos basadas en ataques dentro de los repositorios:

agrisentinel SOC ↗ aegis attack range ↗ emberwall live boot ↗

Freelance

Freelance

Got a project? I also work on commission. ¿Tienes un proyecto? También trabajo por encargo.

01

Energy monitoring Monitorización energética

Your electrical consumption on a real-time dashboard: from the meter to Grafana, with alerts when something spikes. Know what each line draws, when, and what it costs.

Tu consumo eléctrico en un panel en tiempo real: del contador a Grafana, con alertas cuando algo se dispara. Sabrás qué gasta cada línea, cuándo y cuánto cuesta.

  • Meter → LoRaWAN/MQTT → dashboard Contador → LoRaWAN/MQTT → panel
  • Consumption alerts and thresholds Alertas de consumo y umbrales
  • History and comparisons Histórico y comparativas

02

Site & field sensing Sensorización de nave y campo

Temperature, humidity, irrigation, air quality — self-powered sensors where cables can’t reach, with reliable data on your phone. Built for agriculture, warehouses and greenhouses.

Temperatura, humedad, riego, calidad del aire — sensores autónomos donde no llega el cable, con datos fiables en tu móvil. Pensado para agro, naves e invernaderos.

  • Custom ESP32/LoRa nodes Nodos ESP32/LoRa a medida
  • Solar-powered where needed Autonomía solar donde haga falta
  • Dashboard + threshold alerts Panel + avisos por umbral

03

Deployment security Seguridad del despliegue

I review and harden existing IoT deployments: authentication, encryption, updates, and what’s exposed to the network that shouldn’t be. The part almost nobody offers small businesses.

Reviso y endurezco instalaciones IoT existentes: autenticación, cifrado, actualizaciones y qué está expuesto a la red que no debería. La parte que casi nadie ofrece a pymes.

  • Network & OT protocol audit Auditoría de red y protocolos OT
  • Encryption & credentials done right Cifrado y credenciales bien hechos
  • A clear report, no fluff Informe claro, sin humo

01

Tell me the problem Cuéntame el problema

A call or a visit, no strings attached. I ask, I look, I take notes. Una llamada o una visita, sin compromiso. Pregunto, miro y tomo notas.

02

Fixed proposal Propuesta cerrada

Scope, timeline and price in writing. No surprises halfway through. Alcance, plazos y precio por escrito. Sin sorpresas a mitad de obra.

03

Install & answer for it Instalo y respondo de ello

I build it, document it and stand behind it — with optional monthly maintenance. Lo monto, lo documento y doy la cara — con mantenimiento mensual opcional.

Every installation can include a monthly maintenance plan: monitoring, updates and support, so it keeps working after I leave. Toda instalación puede incluir plan de mantenimiento mensual: monitorización, actualizaciones y soporte, para que siga funcionando cuando yo ya no esté.

Full index

Índice completo

Everything else in ~/projects. Todo lo demás en ~/projects.

  1. 01 aegisvault Local-first encrypted secrets manager: Python core, native Rust crypto, Shamir K-of-N recovery, TOTP and a tamper-evident audit chain. Gestor de secretos cifrado y local-first: núcleo Python, cripto nativa en Rust, recuperación Shamir K-de-N, TOTP y auditoría encadenada. Python · Rust · Cryptography
  2. 02 quantlab Backtesting engine on a DDD trading domain — CLI, TUI and native GUI over one core. Motor de backtesting sobre un dominio de trading DDD — CLI, TUI y GUI nativa sobre un mismo núcleo. Python · DDD · PySide6
  3. 03 auth-lab NestJS zero-trust authentication with JWT rotation, TOTP MFA, GeoIP impossible-travel and a CI-verified attack simulator. Autenticación zero-trust en NestJS con rotación JWT, MFA TOTP, GeoIP impossible-travel y simulador de ataques verificado en CI. NestJS · TypeScript · Vault
  4. 04 solar-weather-station Simulation-first, solar-powered ESP32 weather station with LoRa, MQTT, Node-RED, InfluxDB and Grafana. Estación meteorológica ESP32 solar y simulation-first con LoRa, MQTT, Node-RED, InfluxDB y Grafana. Python · ESP32 · LoRa
  5. 05 toychain Educational Rails blockchain with background proof-of-work, attributed tampering and independent Python verification. Blockchain educativa en Rails con proof-of-work en background, manipulación atribuida y verificación independiente en Python. Ruby · Rails · SHA-256
  6. 06 arch-linux-hardened-server Security-focused Arch Linux server with nftables, SSH hardening and Fail2Ban, documented end to end. Servidor Arch Linux orientado a seguridad con nftables, hardening SSH y Fail2Ban, documentado de principio a fin. Linux · Hardening
  7. 07 api_iot End-to-end IoT monitor: ESP32 and DHT22 publishing over MQTT to a Node.js backend and React dashboard. Monitor IoT de extremo a extremo: ESP32 y DHT22 publicando por MQTT a un backend Node.js y un panel React. ESP32 · MQTT · React
  8. 08 Proyecto_IoT_J3_SmartWatch_LoRaWAN End-to-end LoRaWAN smartwatch platform with embedded sensors, TTN integration and real-time dashboards. Plataforma smartwatch LoRaWAN con sensores embebidos, integración TTN y dashboards en tiempo real. ESP32 · LoRaWAN · Embedded
  9. 09 snake-hd Polished Pygame arcade game with custom pixel art and a SHA-256 tamper-evident leaderboard backed by Rust/Axum. Arcade pulido en Pygame con pixel art propio y un marcador SHA-256 a prueba de manipulación sobre Rust/Axum. Python · Pygame · Rust

About

Sobre mí

One engineer, end to end. Un solo ingeniero, de extremo a extremo.

I design the node, write the firmware, build the backend, wire the dashboard and harden the whole thing. No handoffs, no “that’s the other company’s part”. You deal with one person who owns the result — and everything I ship comes with its own test suite.

Diseño el nodo, escribo el firmware, monto el backend, conecto el panel y endurezco el conjunto. Sin intermediarios ni “eso es de la otra empresa”. Tratas con una sola persona que responde del resultado — y todo lo que entrego lleva su propia suite de tests.

Rust · Python · TypeScript ▸ IoT/OT · AppSec · native tooling Rust · Python · TypeScript ▸ IoT/OT · AppSec · herramientas nativas

Explore all repositories Explorar todos los repositorios
Connectivity
Conectividad
ESP32 · LoRaWAN · MQTT · Modbus
Data & dashboards
Datos y paneles
InfluxDB · Grafana · Node-RED · Series temporales
Security
Seguridad
Cifrado · Autenticación · Hardening · Protocolos OT

Contact

Contacto

Let’s build something useful. Construyamos algo útil.

A role on your team, or something you need measured, connected or hardened — either way, tell me about it and I’ll get back to you. Un puesto en tu equipo, o algo que necesites medir, conectar o endurecer — sea lo que sea, cuéntamelo y te contesto.