~/krizcold
Open to work, remote or Santiago, Chile

Cristián Acuña

Full-stack engineer. I ship the infrastructure my own code runs on.

I build product across the stack, and then I build the layers underneath it too: release pipelines, auth proxies, container packaging, a distributed control plane for my own bot platform. Two years and nine months of that as a remote contractor to a French company, on an open-source self-hosting platform, plus a production LLM pipeline that keeps a rule-based filter in front of the model.

Santiago, Chile, UTC−4, full overlap with US Easterngithub.com/krizcoldLinkedInDocker Hub
01

About

I'm a platform and DevOps engineer with full-stack TypeScript range.

For two years and nine months I worked as a remote contractor to a French company, Aptero. I joined on WebXR, building immersive 3D products for Microsoft Teams and their Opal authoring tool, and moved into platform and DevOps when the company pivoted to Yundera, an open-source self-hosting platform built on CasaOS. There I owned the container app-catalog packaging and the release automation, and I wrote the tooling the rest of the team depended on: the build service that ran inside the release pipeline, and the forward-auth reverse proxy that became the base layer the platform's SSO was built on.

Alongside that I built Appbogados, a legal-services matching platform now in production in Chile. A deterministic rule-based filter narrows candidates on region, comuna, active status and credentials before an OpenAI step tags the case against a legal taxonomy and scores each lawyer. Keeping the rules in front of the model is what keeps the cost and the failure modes bounded.

The project I'd most want someone to read is the one nobody paid me for. What started as a Discord bot grew, through overhaul after overhaul, into three repos of platform: a custom multi-node sharding control plane with term/epoch fencing-token leases, least-loaded shard placement and a two-phase live guild migration; a pluggable persistence layer where the Postgres backend self-provisions its schema and enforces single-writer ownership with a compare-and-swap, so a deposed node's writes fail at the database rather than racing; a module schema other developers can build against, where one panel definition renders in both Discord and the browser; and an orchestration service that takes any public repo or image and turns it into a running container across seven language runtimes, with a shell, a file browser and live logs in the web UI. It runs on my own machines, behind Caddy and Authelia, from multi-arch images built in GitHub Actions.

Alongside that there's Soundbinder, a Rust and Tauri soundboard that's where I'm learning Rust properly rather than reading about it.

Spanish native, English C2. Open to platform, DevOps, infrastructure or full-stack roles, remote or in Santiago.

02

Experience

WebXR Developer → Platform & DevOps Engineer Aptero

Aug 2023 to May 2026, 2 yrs 9 mos
Contract, Remote from Chile to France

Owned container app-catalog packaging and release automation for Yundera, an open-source self-hosting platform. Wrote the Yundera Dev Kit, a containerized GitHub-to-registry build service that ran as the build container in the release pipeline, 113 commits, 14 releases, published to GHCR and Docker Hub.

Built AppShield, a reusable forward-auth reverse proxy with hash, username/password and OIDC modes. It became the base layer the platform's Caddy-based SSO was built on. Tested in front of Stremio, Jellyfin, Plex and code-server, handling WebSockets, streaming and large uploads without per-app configuration.

Built Appbogados, a legal-services matching platform now in production in Chile.

Joined as a WebXR developer on Aptero's immersive 3D products for Microsoft Teams and on Opal, their authoring tool.

TypeScriptNode.jsExpressNext.jsPostgreSQLDockerDocker ComposeNGINXCaddyOIDCGitHub ActionsGHCRLinuxOpenAIThree.jsWebXR

Independent Developer

Jun 2021 - Present
Self-employed, Chile

The main one is the distributed Discord bot platform, three public repos, TypeScript, built solo. A custom multi-node sharding control plane with a 28-message master/worker WebSocket protocol, term/epoch fencing-token leases, least-loaded shard placement and two-phase live guild migration; a pluggable persistence layer with JSON-file and PostgreSQL backends, where Postgres enforces single-writer ownership with a compare-and-swap; a module schema other developers build against; and a Docker orchestration service that ingests any public repo or image across seven language runtimes and exposes a shell, file browser and live logs over WebSocket.

Commissioned and personal work otherwise, in software, developer tooling, video games, custom mechanics and engine code. End-to-end: research, architecture, build, ship. Soundbinder is the other active one; earlier work is mostly GameMaker (thousands of recorded hours in GML), custom 3D assets in Blender, and a steady stream of scripting and automation jobs.

TypeScriptNode.jsPostgreSQLDockerWebSocketReactCaddyAutheliaGitHub ActionsRustTauri

Automated Control Technician DreamLabs

Mar 2021 - Jun 2021
Full-time / Contract, Chile

Designed a proof-of-concept test bench end to end. Specced the model and the component list, supported the programming, sourced quotes from suppliers, and physically assembled the bench.

Education

Universidad Técnica Federico Santa María (USM)
Técnico Universitario en Robótica y Mecatrónica
2017 - 2021, Titulado, on campus
03

Projects

Distributed Discord bot platform

Control plane, storage layer, build service

Three repos and one system, designed and built solo. A multi-node shard control plane, written instead of using discord.js ShardingManager, with a 28-message master/worker WebSocket protocol, term/epoch fencing-token leases, identify pacing driven by the gateway's own maxConcurrency, least-loaded placement scored on capacity, CPU and event-loop lag, and two-phase live guild migration. Underneath it, a pluggable persistence layer whose Postgres backend hash-partitions guild data 32 ways and enforces single-writer ownership with a compare-and-swap, so a deposed node's writes fail at the database. Alongside it, an orchestration service that turns any public repo or image into a running container across seven language runtimes, with per-container shell, file browser and live logs in the browser.

TypeScriptNode.jsPostgreSQLDockerWebSocketReactOAuth
github.com/krizcold/docker-discord-bot-manager

Soundbinder

Long-running side project

Advanced soundboard in Rust, Tauri and TypeScript, built as a serious alternative to Soundpad. Windows-first, with multi-platform support on the roadmap. Long-running personal project, and where I'm learning Rust in earnest.

RustTauriTypeScript
Private projectPrivate repository, walkthrough available on request
2y 9m
Remote contractor to France
5+ yrs
Independent dev since 2021
14
Releases shipped on Yundera Dev Kit
13+ yrs
GameMaker (GML)
ES / EN
Native Spanish, C2 English
04

Skills

Infrastructure and platform

DockerDocker ComposeNGINXCaddyOIDC / AutheliaForward-auth and reverse proxiesWireGuardGitHub ActionsGHCR / Docker HubLinuxCasaOS

Distributed systems

Multi-node control planesFencing-token leasesSingle-writer enforcement via compare-and-swapLive workload migrationWebSocket control protocols

Built for my own bot platform: the lease protocol, the placement scoring and the migration handshake are all mine. Implemented and running on my machines, not proven across a fleet, and I'd say so in an interview.

Backend

Node.jsExpressPostgreSQLFirebaseREST APIsWebSocket

Languages and programming

TypeScriptJavaScriptPythonRustShell / BashGMLC#LuaPawnC

TypeScript is my primary professional language. GML is the oldest one I still use, 13+ years. Rust I'm learning through Soundbinder.

AI in production

LLM pipelines with deterministic pre-filtering and scoringOpenAI APIAI-assisted coding inside a normal review-and-test workflow

I was writing software long before LLMs. AI sits inside the same review and testing I'd apply to any code, never as a substitute for understanding it. Appbogados is where that approach shipped.

Frontend

ReactNext.jsThree.jsWebXRTauriHTML5CSSGLSL ES (shaders)

3D and design

Blender (modeling, texturing, rigging, animation)Autodesk InventorFreeCADLibreCADAdobe PhotoshopGIMP

Blender is the one I've used the longest, 10+ years and 1000+ recent hours, full pipeline from modeling to animation.

Robotics and hardware

Universal RobotsArduinoRaspberry PiPLC SiemensElectronic circuit designTCP/IP networksCisco Packet TracerCoppeliaSim

Spoken languages

Spanish (native)English (C2 / EF-SET)
05

Contact

Open to platform, DevOps, infrastructure or full-stack roles. Remote, or on-site in Santiago. I work on UTC−4, which is a full day of overlap with US Eastern.