LecodevBuilds

Software, infrastructure and backend engineer in Barcelona. I build the machinery behind the product: AI gateways, post-quantum cryptography and systems languages.

github.com/lecodev-26
View projects

What I do

I am interested in the layer between software and infrastructure: the part that makes systems useful, controllable and resilient. I would rather build the machinery behind the product than another thin wrapper around an API.

Projects

Release V5.0.1
AppAgentTeam
Sentinel
Flow
OpenAIAnthropicOthers

SentinelFlow

AI gateway and control plane for LLMs

OpenAI-compatible gateway for teams that run several model providers. It brings intelligent routing, provider failover, policies, AI FinOps, security and observability into a single open source layer. Authentication, tenant isolation, quotas, audit and events.

GoPostgreSQLRedisDockerKubernetesPrometheus
Go 87% · HTML 9% · Shell 2% · others 2%
  • StatusV5.0.1 stable · V6 in development on the v6 branch
  • LicenseMIT
  • Last activityOct 7, 2026
V3 merged into main
NEXUS-Q

NEXUS-Q

Post-quantum security engine

Rust security infrastructure to protect data, keys and identities: key lifecycle, authenticated encryption, credentials, audit, policies and hardware abstraction. It is measured with security CI, benchmarks and a PQC Benchmark Arena against other libraries. No independent audit or certification.

RustML-KEM-768ML-DSA-65RISC-VAndroidSDKs
Rust 94% · C 3% · C++ 1% · Go, Shell, PHP, Ruby 2%
  • V1frozen baseline v1.0.0
  • V2frozen on nexusqv2 (v2.0.0)
  • V3merged into main (PR #45)
  • V4architecture-specific performance kernels (Issue #23)
  • Last activityOct 9, 2026
Spec 0.1 closed
AXIOM source codeSemantic modelAXIOM IRNative backend and runtime

AXIOM

Programming language and systems ecosystem

A general-purpose language with a small syntax and a deep semantic model. The long-term goal is its own compiler, runtime, ABI and self-hosted toolchain, so that AXIOM compiles AXIOM. Python and Rust are the transition infrastructure.

PythonRustCompilerRuntimeSystems
Python 51% · Rust 49%
  • Statusarchitecture closed, now being implemented
  • LicenseMIT
  • Last activityOct 3, 2026
Skill + MCP server
Is it an animal?YesDoes it live in water?Not sureI think it is a penguin

Genie

An AI-powered Akinator

A SKILL.md file with instructions that let an AI guess what you are thinking of, with no app and nothing to install. The questions adapt to your answers, a "not sure" counts as neither yes nor no, and it only takes a guess when it has enough evidence. It also includes a minimal remote MCP server for compatible AI clients.

MarkdownTypeScriptMCP
  • LicenseMIT
  • Last activitySep 29, 2026
Live demo
Nuvora

Nuvora

Experimental project

An experimental project with a Python backend and a JavaScript interface, deployed on Vercel. I keep it lightweight while the implementation evolves.

PythonJavaScriptVercel
Python 74% · JavaScript 26%
  • Last activitySep 28, 2026
Open source

Arc

Contributions to the time-series database

I contribute to Arc, by Basekick Labs: an open, SQL-native time-series database written in Go on top of DuckDB, built for high-throughput telemetry, Parquet storage and analytical SQL. I have 5 PRs merged into main, touching the WAL, file replication, ingestion and the tiering API.

GoDuckDBWALParquetIngesta
  • PRs merged into main5
  • Last mergeOct 8, 2026

Arc · contributions

Arc (Basekick Labs) is an AGPL-3.0 licensed SQL time-series database written in Go, with 681 stars. These are my changes that the maintainer has merged into its main branch, with the context of each review.

5PRs merged into main
32files changed
+1,831lines added (−284)
8PRs open for review
#1073Oct 8, 2026

fix(filereplication): make rewritten files immutable

Partial DELETE rewrites no longer mutate the existing manifest entry: they publish a fresh Parquet file, register the new path and delete the old one in a single Raft batch, with the rewritten checksum and size and the rewriting node as the new origin. Before, a same-size rewrite could leave replicas trusting a stale file, because presence was checked by size only. It covers the live, replay and snapshot catch-up paths, and serializes concurrent partial DELETEs so they cannot publish several survivors from the same source. The maintainer noted that the approach was right from the first push. Benchmark on existing data: +0.26%, within the noise margin.

Merged into mainReplication · Raft+623 −101 · 16 filesAfter 26.09.3Closes #975 · unblocks #1092
Ver PR
#1051Oct 7, 2026

fix(api): validate tiering file limits

GET /api/v1/tiering/files rejects non-integer or negative limit values, which used to cause a panic when slicing with a negative index. I added a structural guard with a positive limit at the point of use, kept limit=0 as an explicit empty result, and dropped the proposed cap of 1000 so the API stays backward compatible.

Merged into mainAPI · Tiering+129 −21 · 2 filesAfter 26.09.3Fixes #1135
Ver PR
#1055Oct 4, 2026 (merged Oct 5)

fix(wal): line-protocol WAL entries carry their database envelope

Line-protocol writes reached the buffer as columns with no raw client bytes, so their WAL entry went out without a database and a receiver always filed it under "default". The row-format path now writes the same envelope that msgpack uses. It is safe for replay, receiver, checkpoints and large sizes, and readable by any binary since 26.05.1. During review the maintainer narrowed the scope: the change in cmd/arc/main.go (#886), which depended on #888, was dropped and only the #889 envelope was kept.

Merged into mainWAL · Replication+137 −4 · 3 filesRelease 26.09.3Fixes #889
Ver PR
#1056Oct 4, 2026

fix(wal): purge only data proven flushed

Closes the remaining gap in WAL purging. It tracks pending identities through durable flush checkpoints, exposes a real minimum-unflushed sequence and uses PurgeFlushed instead of wall-clock age for periodic and recovery cleanup, so a file is deleted only once its data has been flushed. After review, a maintainer commit bounds the purge floor and reclaims files it cannot describe.

Merged into mainWAL · Durability+884 −156 · 8 filesRelease 26.09.3Resolves #1009 / #966
Ver PR
#769Sep 13, 2026

fix(ingest): log numeric host coercion at debug level

The fallback that coerces numeric values into host_<num> strings is intentional and stays, but it hid a sign of misconfigured clients. I added a debug-level log when it fires, so the hot ingest path is not flooded, and two test cases (float and boolean host) that fall through to the default branch. It went through three review rounds and the merge added me to the project contributors list.

Merged into mainIngestion · MessagePack+58 −2 · 3 filesRelease 26.09.2Fixes #768
Ver PR

Open, not merged yet

These 8 PRs are still under review or being consolidated. I do not count them as merged contributions.

#1185 · fix: separate WAL and reconciliation identitiesOpen · Oct 9#1074 · fix(cluster): keep replicated batches out of manifest registrationOpen · closes #888 · a reviewer validated the tests with -race#1059 · feat(wal): apply disk pressure backpressureReopened by the maintainer: it will be consolidated on top of #1115 with credit for my work#1058 · fix(api): reject invalid execution limitsOpen#1057 · feat(metrics): expose queued and inflight ingest recordsOpen#1054 · fix(filereplication): verify snapshot catch-up contentOpen · verifies SHA-256 on catch-up#1053 · feat(retention): apply policies to cold tierOpen#1052 · feat(tiering): support filtered manual migrationsOpen · filters by database and measurement

Source: the public PR and release pages of Arc on GitHub and its API, as of October 9, 2026. All merges were done by the project maintainer. #769 shipped in 26.09.2, #1055 and #1056 in 26.09.3, and #1051 and #1073 were merged after 26.09.3, the latest published release.

Timeline

Stack

GoRustPythonTypeScriptPostgreSQLRedisDockerKubernetesLinuxTermuxMCP

Let's talk

lecodevv@gmail.com

github.com/lecodev-26