Telco and edge-cloud engineer working where mobile networks meet cloud-native infrastructure — 5G cores and RAN, Kubernetes orchestration, MEC, and the APIs that let one drive the other. Currently at Nearby Computing in Barcelona; previously at Vicomtech in San Sebastián and, before that, CTTC in Castelldefels.
Most of my work is the unglamorous middle layer: packaging network functions so they actually deploy, making infrastructure observable down to the radio, and designing the interfaces that let an orchestrator act on what it sees. A recurring theme is failures that are silent — a CAPIF that disables itself and answers normally, a load balancer that announces from no node and logs nothing, a GPU that never reaches the guest. Most of what I build asserts rather than assumes.
On the research side I publish on network slice federation and cloud-native service orchestration for 5G and 6G, and I am writing a PhD thesis in the same area.
Grouped by what the problem is, rather than by language.
Orchestration and federation — making independently-run platforms cooperate
- sliceweaver — Per-slice agents that negotiate bandwidth through Kubernetes Custom Resources. Two Go operators, a per-slice agent and a 5G simulator, with the CRs as the only interface: every decision is an object you can read, diff and replay, and any Kubernetes-aware orchestrator can drive it.
- closed-loop-k8s-scaling — Where that
idea started: read a workload's CPU out of Thanos, decide, and write desired state into a
Kubernetes object an orchestrator watches. Early work, and the README says what it got wrong —
a Secret has no schema and no status to read back, so the loop never quite closes.
sliceweaveris the same loop done properly. - slice-ambr-closed-loop — A loop over 5G slice bitrate ceilings: watch the acceptance ratio, and when a fixed split of the budget starts turning demand away, reallocate it. It re-reads what the core is actually enforcing every iteration rather than trusting its own last write, and deciding is kept separate from actuating, so a bad policy produces bad metrics rather than a misconfigured core. The allocation policy sits behind a seven-member interface; the learned one that produced the published results is a colleague's and is not included, so a proportional-fair baseline ships in its place. One of the use cases in the IEEE Communications Standards Magazine paper.
- ipsec-interconnect-operator — A Kubernetes operator configuring IPsec tunnels between operator platforms through a vendor-neutral API with pluggable southbound drivers (strongSwan, VyOS). The tunnel is infrastructure with its own lifecycle, so it deliberately knows nothing about whatever consumes it.
- edge-cloud-dns-testbed — Three
Kubernetes sites, each claiming its own address and publishing its own DNS, so a service can
migrate between edge and cloud and the name follows it. The infrastructure behind an
IEEE ICNP 2025 paper; Ansible, at the
ansible-lintproduction profile. - cell-aware-service-migration — An edge application that follows a moving vehicle between cells. A 5G core already knows which gNB a subscriber is camped on; subscribe to its session events and that is enough to re-pin the workload to the edge node serving the new cell — state endpoint included, or the migrated pod serves the previous site's data. Behind a BalkanCom 2025 paper.
- ran-aware-edge-autoscaling — Scaling edge applications on what the mobile network already knows instead of on CPU, using both halves of it: the core's session data says whether an application belongs at an edge node at all, and the RAN's aggregated cell traffic says how big it should be. Traffic alone cannot tell you to undeploy, because idle users and no users look identical. CPU only tells you the load already arrived. The decision is a pure function, so it reads against the paper's algorithm line by line and every branch is tested without a cluster. Behind a EuCNC/6G Summit 2025 paper.
- edge-placement-notifier — An
orchestrator knows when it moves an edge application to another site; the client does not, and
the client is the one that has to reconnect. A Kubernetes operator that publishes one Kafka event
when the serving site changes. Exactly-once is the whole problem — a reconcile loop re-runs for a
resync or a restart, so what was last announced lives in
statusrather than in memory, and a restarted operator does not tell every client to reconnect again. - openop-federation-lab — Standing up two independent operator platforms and federating them: cross-domain OAuth2, two Keycloak realms, and the investigation notes from making it actually work.
- BIND5G — Network as a Service API specification, cross-site Prometheus federation with Thanos, and the WireGuard VPN that federation runs over.
5G core, RAN and network exposure
- open5gs-k8s — A complete Open5GS 5G Standalone core on Kubernetes with a relocatable UPF: one flag moves the user plane to edge nodes while the control plane stays central, which is the topology that makes edge offload measurable.
- nef-capif-testbed — A 3GPP NEF against a simulated core with ETSI OpenCAPIF doing real API authorisation, including why a half-configured CAPIF is indistinguishable from a working open one.
- mec-edge-site — A MEC site whose observability reaches past containers into the radio: per-UE throughput, MCS and SNR from a live Amarisoft RAN landing in the same Prometheus as pod metrics.
Agents and LLM systems
- agent-lab — Learning LLM agent development in Go, one concept at a time. Five self-contained stages from a single agent to agent-to-agent communication with a registry, memory and MCP tools. Kept as written, including the stage where four services collapse back into one because the distribution was not paying for itself.
Platform and infrastructure
- rke2-kubernetes-cluster — Ansible for
HA RKE2: embedded-etcd control plane, air-gapped installs, and runbooks for upgrade, backup,
restore and rotation. Passes
ansible-lintat the production profile. - kubevirt-gpu-passthrough — Running VMs with a physically passed-through GPU on Kubernetes, including a Windows guest over RDP. Every link in the host-to-guest chain fails silently, so each one is asserted rather than assumed.
16 peer-reviewed publications, 8 as first author — network slicing, slice federation, cloud-native orchestration and edge-cloud service migration for 5G and 6G. The complete list with DOIs is in PUBLICATIONS.md. A selection:
-
"6G-Core-in-the-Loop: Enabling Service and Network Orchestration in a Cloud-Native Ecosystem," IEEE Communications Standards Magazine, vol. 10, pp. 72–79, 2026. doi
-
"Cloud-Native Orchestration Framework for Network Slice Federation Across Administrative Domains in 5G/6G Mobile Networks," IEEE Transactions on Vehicular Technology, vol. 73, pp. 9306–9319, 2024. doi
-
"Coupling Orchestration and DNS for Seamless Service Migration in the Edge–Cloud Continuum," IEEE ICNP 2025. doi
-
"Exploiting 6G RAN and Core Network Information for Intelligent Edge-Cloud Service Orchestration," EuCNC/6G Summit 2025, pp. 369–374. doi
-
"NSFaaS: Network Slice Federation as a Service in Cloud-Native 5G and Beyond Mobile Networks," IEEE NFV-SDN 2023, pp. 59–64. doi
-
"SDN-Based Resource Management for Optical-Wireless Fronthaul," in Enabling 6G Mobile Networks, Springer, pp. 467–500, 2021. doi
🥈 2nd Prize — ETSI / Linux Foundation MEC Hackathon 2022
Team Pedraforca (CTTC and Vicomtech), for "Virtualized mobile and edge infrastructures with OpenAPI integrations" — mapping a commercial Amarisoft RAN's proprietary WebSocket interface onto the ETSI MEC012 RNIS API, with a decision engine scaling edge applications through a Kubernetes OpenAPI I built.
Platform · Kubernetes kubebuilder Helm kustomize Ansible Terraform KubeVirt Docker
Languages · Go Python FastAPI
Agents · Google ADK MCP A2A LLM tool-calling
Mobile networks · Open5GS free5GC UERANSIM Amarisoft 3GPP 5G SA O-RAN
Standards and orchestration · ETSI MEC ETSI OSM ETSI OpenOP CAPIF CAMARA OpenAPI
Observability · Prometheus Grafana Thanos


