Temps is a self-hosted, open-source alternative to Vercel, Sentry, PostHog, and other SaaS platforms, bundled into a single Rust binary. It provides Git-based deployments, built-in analytics, session replay, error tracking, uptime monitoring, managed databases, and transactional email — designed for teams wanting to consolidate infrastructure costs and avoid vendor lock-in.
AI-native open-source alternative to Vercel + Sentry + PostHog + Pingdom + Resend + E2B. 440+ CLI operations with drop-in skills for Claude Code, Codex & OpenCode — deployments, analytics, session replay, error tracking, OpenTelemetry, email, sandboxes & AI gateway in one self-hosted Rust binary.
README
The open-source, self-hosted deployment platform.
Deploy, observe, and scale -- from a single binary.
Website | Documentation | Quick Start | GitHub
curl -fsSL https://temps.sh/deploy.sh | bash

Stop paying for 6 different SaaS tools. Temps replaces your deployment platform, analytics, error tracking, session replay, uptime monitoring, and transactional email -- all self-hosted, all in one binary.
Features
Git Push to Deploy Push to Git, Temps builds and deploys. Auto-detects frameworks, creates preview URLs, and handles zero-downtime rollouts.

Built-in Analytics & Session Replay Web analytics with funnels, visitor tracking, and session replay (rrweb). Sentry-compatible error tracking. No external services.

Pingora-Powered Proxy Runs on Cloudflare's Pingora engine. Auto TLS via Let's Encrypt (HTTP-01 & DNS-01), custom domains, and full request logging.

Managed Services Provision Postgres, Redis, S3 (MinIO), and MongoDB alongside your apps. Temps handles creation, backups, and teardown.

Request Logs & Proxy Visibility Every HTTP request logged with method, path, status, response time, and routing metadata. Filter and search without extra tooling.

Monitoring & Alerts Monitors for deploy failures, runtime crashes, certificate expiry, and backup health. Get notified before problems reach users.

Transactional Email
Add sender domains with DKIM records through the UI. Send transactional emails via @temps-sdk/node-sdk. No external email service needed.
Works with your stack
Quick Start
curl -fsSL https://temps.sh/deploy.sh | bash
Tested on: Ubuntu 24.04 / 22.04 | Also works on macOS
What Temps replaces
| What you get | Instead of paying for |
|---|---|
| Git deployments + preview URLs | Vercel / Netlify / Railway ($20+/mo) |
| Web analytics + funnels | PostHog / Plausible ($0-450/mo) |
| Session replay | PostHog / FullStory ($0-2000/mo) |
| Error tracking | Sentry ($26+/mo) |
| Uptime monitoring | Better Uptime / Pingdom ($20+/mo) |
| Managed Postgres/Redis/S3 | AWS RDS / ElastiCache ($50+/mo) |
| Transactional email + DKIM | Resend / SendGrid ($20-100/mo) |
| Request logs + proxy | Cloudflare ($0-200/mo) |
| Total with Temps | $0 (self-hosted) |
Temps vs. Alternatives
| Feature | Temps | Coolify | Dokploy | Kamal | Railway | Render | Vercel |
|---|---|---|---|---|---|---|---|
| Self-hosted & open source | Yes | Yes | Yes | Yes | No | No | No |
| Single binary install | Yes | No | No | CLI tool | -- | -- | -- |
| Git push deploy | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Preview deployments | Yes | Yes | Yes | No | Yes | Yes | Yes |
| Auto TLS (HTTP-01 + DNS-01) | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Docker Compose support | No | Yes | Yes | No | -- | -- | -- |
| One-click template library | No | 280+ | Yes | No | Yes | Yes | Yes |
| Web analytics | Yes | No | No | No | No | No | Paid add-on |
| Session replay | Yes | No | No | No | No | No | No |
| Error tracking (Sentry-compatible) | Yes | No | No | No | No | No | No |
| Uptime monitoring | Yes | No | No | No | No | No | No |
| Transactional email + DKIM | Yes | No | No | No | No | No | No |
| Managed Postgres / Redis | Yes | Yes | Yes | No | Yes | Yes | Partner add-ons |
| S3-compatible storage | Yes | No | No | No | No | No | Blob (paid) |
| Multi-node / clustering | Yes | Yes | Swarm | Yes | Managed | Managed | Managed |
| Edge functions / global edge network | No | No | No | No | No | No | Yes |
| Per-seat fees | No | No | No | No | $20/user (Pro) | Per-user | $20/seat (Pro) |
Where the alternatives win. Coolify and Dokploy have first-class Docker Compose support and one-click template libraries (280+ apps on Coolify) that Temps doesn't have yet, and both have far larger communities — Coolify alone has 56k+ GitHub stars, while Temps is the newest project on this list. Kamal is the simpler choice if all you want is zero-downtime Docker deploys driven from a CLI. Vercel and the other managed platforms give you a global edge network, edge functions, and DDoS absorption that a single VPS can't match — and they run the infrastructure for you, which is real value if you never want to think about a server.
Detailed, regularly updated comparisons: temps.sh/compare
Tech Stack
- Backend: Rust, Axum, Sea-ORM, Pingora (Cloudflare's proxy engine), Bollard (Docker API)
- Frontend: React 19, TypeScript, Tailwind CSS, shadcn/ui
- Database: PostgreSQL + TimescaleDB
- Architecture: 30+ workspace crates, three-layer service architecture
SDKs
| Package | Description |
|---|---|
@temps-sdk/node-sdk |
Platform API client + Sentry-compatible error tracking |
@temps-sdk/react-analytics |
React analytics, session replay, Web Vitals, engagement tracking |
@temps-sdk/kv |
Serverless key-value store |
@temps-sdk/blob |
File storage (S3-compatible) |
@temps-sdk/cli |
Command-line interface |
Analytics -- wrap your React app, everything else is automatic:
import { TempsAnalyticsProvider } from '@temps-sdk/react-analytics';
export default function App({ children }) {
return <TempsAnalyticsProvider>{children}</TempsAnalyticsProvider>;
}
Error tracking -- Sentry-compatible, drop-in replacement:
import { ErrorTracking } from '@temps-sdk/node-sdk';
ErrorTracking.init({ dsn: 'https://[email protected]/1' });
try {
riskyOperation();
} catch (error) {
ErrorTracking.captureException(error);
}
KV store -- Redis-like API, zero config:
import { kv } from '@temps-sdk/kv';
await kv.set('user:123', { name: 'Alice', plan: 'pro' }, { ex: 3600 });
const user = await kv.get('user:123');
Blob storage -- upload and serve files:
import { blob } from '@temps-sdk/blob';
const { url } = await blob.put('avatars/user-123.png', fileBuffer);
const files = await blob.list({ prefix: 'avatars/' });
Contributing
We welcome contributions. See CONTRIBUTING.md for guidelines.
git clone https://github.com/gotempsh/temps.git
cd temps
cargo build --release
License
Dual-licensed under MIT or Apache 2.0.
Comments (0)
Sign in to join the discussion.
No comments yet
Be the first to share your take.