* fix(cli): fix project resolution in env vars subcommands and services env response parsing Two bugs fixed: 1. `environments vars` subcommands (get, set, delete, import, export) used `cmd.parent!.parent!.opts().project` to read the `--project` flag, traversing one level too high in the command hierarchy. The `--project` flag is defined on the `vars` command, so the correct traversal is `cmd.parent!.opts().project`. The `list` subcommand already did this correctly. Before: `temps envs vars -p my-app delete KEY` → "Project undefined not found" After: `temps envs vars -p my-app delete KEY` → successfully deletes 2. `services env` command crashed with "envVars is not iterable" because the API endpoint returns `HashMap<String, String>` (a plain object) but the CLI expected `Array<EnvironmentVariableInfo>`. Added handling to convert the object response into the expected array format. Before: `temps services env --id 1 -p my-app` → "envVars is not iterable" After: `temps services env --id 1 -p my-app` → displays variables correctly * docs: add CLI env vars fixes to changelog [Unreleased] |
||
|---|---|---|
| .github | ||
| apps/temps-cli | ||
| assets/screenshots | ||
| crates | ||
| docs | ||
| examples | ||
| images | ||
| mcp | ||
| scripts | ||
| sdks | ||
| skills | ||
| web | ||
| .dockerignore | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| _typos.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| cliff.toml | ||
| CONTRIBUTING.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.release | ||
| LICENSE | ||
| LICENSE-MIT | ||
| NOTICE | ||
| README.md | ||
| RELEASE_CHECKLIST_v0.0.7.md | ||
| SECURITY.md | ||
| temps-demo-slow.gif | ||
| temps-demo.gif | ||
The open-source, self-hosted deployment platform.
Deploy, observe, and scale -- from a single binary.
From bare server to fully deployed — in under 3 minutes (166s).
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 |
AI-Ready (MCP Server)
Ship with a Model Context Protocol server ( |
Works with your stack
Any language, any framework. Auto-detected or bring your own Dockerfile.
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 | CapRover | Dokku | Railway | Vercel |
|---|---|---|---|---|---|---|---|
| Self-hosted | Yes | Yes | Yes | Yes | Yes | No | No |
| Single binary install | Yes | No | No | No | No | -- | -- |
| Git push deploy | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Multi-node / clustering | No | Yes | Yes | Yes | No | Yes | Yes |
| Web analytics | Yes | No | No | No | No | Yes | Yes |
| 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/S3 | Yes | Yes | Yes | Partial | Plugin | Yes | Add-on |
| Pingora proxy (Cloudflare-grade) | Yes | No | No | No | No | No | No |
| Auto TLS (HTTP-01 + DNS-01) | Yes | Yes | Yes | Yes | Plugin | Yes | Yes |
| Request-level logging | Yes | No | No | No | No | Partial | Partial |
| Preview deployments | Yes | Yes | Yes | No | No | Yes | Yes |
| Built with Rust | Yes | No | No | No | No | No | No |
| Free & open source | Yes | Yes | Yes | Yes | Yes | No | No |
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 |
@temps-sdk/mcp |
Model Context Protocol server for AI agents |
Quick examples
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://key@your-instance.temps.dev/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.






