Engineering Deep-Dives from the Temps Team

These are the design notes: why the platform is written in Rust, how a git push becomes a running container, and how pieces such as the AI gateway and internal DNS are built. They explain the reasoning as well as the result.

19 posts

8 min read
By David Viejo

Why we chose Rust for a deployment platform: one self-contained binary, no GC pauses in the Pingora proxy, and four build targets from one source tree.

10 min read
By David Viejo

What actually happens between git push and your app being live: webhook delivery, build queues, health checks and the traffic swap, explained step by step.

9 min read
By David Viejo

How Temps merges requests, OpenTelemetry traces, errors and revenue events into one time-ordered timeline, with errors linked to the traces that produced them.

13 min read
By David Viejo

How Temps turns a production error group into a sandboxed AI agent run, a reviewed fix and a pull request, starting from the error's symbolicated stack trace.

14 min read
By David Viejo

Build an OpenAI-compatible AI gateway: request translation, SSE streaming and per-token cost tracking, plus LiteLLM, Portkey, Helicone and Kong compared.

15 min read
By David Viejo

How Temps resolves *.temps.local for HA databases and multi-node apps with a per-node Hickory resolver: an opt-in CoreDNS alternative without Kubernetes.

7 min read
By David Viejo

Track recognized AI crawler requests by agent, provider, page, purpose, and response status—without confusing a User-Agent match with training or citations.

13 min read
By David Viejo

Temps issues TLS certificates on demand at the first handshake for sslip.io and wildcard-DNS subdomains — no pre-provisioning and no DNS control required.

12 min read
By David Viejo

Coolify runs single-container Postgres; Temps adds pg_auto_failover HA, WAL-G backups and multi-node clustering. Coolify still wins on templates and community.

11 min read
By David Viejo

Self-hosted PostgreSQL high availability with pg_auto_failover: automatic failover, multi-host connection strings, optional role-aware DNS and WAL-G backups.

7 min read
By David Viejo

How I use AI to build a large Rust project: about 30% faster on boilerplate, tests and docs, no faster on architecture or race conditions.

13 min read
By David Viejo

In-process, WASM, sidecar and webhook plugin patterns side by side, with working code for a sidecar plugin manager and the trade-offs we hit in production.

7 min read
By David Viejo

A content-length header on a HEAD response over HTTP/2 makes clients wait for a body that never arrives. The fix for Nginx, Node.js and Rust reverse proxies.

12 min read
By David Viejo

Make your site crawlable by AI agents: which bots train, search or fetch for users (GPTBot vs OAI-SearchBot), plus robots.txt, llms.txt and markdown serving.

8 min read
By David Viejo

Define AI agents in .temps/agents/*.yaml that run on new errors, deploys, cron or webhooks and open pull requests via Claude Code, Codex or OpenCode.