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.
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
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.
How Temps merges requests, OpenTelemetry traces, errors and revenue events into one time-ordered timeline, with errors linked to the traces that produced them.
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.
Build an OpenAI-compatible AI gateway: request translation, SSE streaming and per-token cost tracking, plus LiteLLM, Portkey, Helicone and Kong compared.
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.
Track recognized AI crawler requests by agent, provider, page, purpose, and response status—without confusing a User-Agent match with training or citations.
E2B alternatives compared on isolation, pricing and data residency: Modal, Morph Cloud, Daytona, Temps and raw Firecracker. The pick turns on self-hosting.
Openship and Temps under the hood: TypeScript and OpenResty vs Rust and Pingora, Compose handling, SSH targets and built-in observability, from source.
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.
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.
Self-hosted PostgreSQL high availability with pg_auto_failover: automatic failover, multi-host connection strings, optional role-aware DNS and WAL-G backups.
TimescaleDB vs ClickHouse for self-hosted analytics: joins, mutability, compression, backups and on-call burden, plus when running both is worth it.
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.
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.
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.
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.
Self-hosted AI gateway built into Temps: one OpenAI-compatible endpoint for OpenAI, Anthropic, Gemini and Grok, with per-tag cost tracking and BYOK.
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.