{"id":35448366,"url":"https://github.com/gotempsh/temps","last_synced_at":"2026-05-24T23:08:46.141Z","repository":{"id":320154461,"uuid":"1080410643","full_name":"gotempsh/temps","owner":"gotempsh","description":"Self host your own Vercel","archived":false,"fork":false,"pushed_at":"2026-05-19T21:53:22.000Z","size":100871,"stargazers_count":445,"open_issues_count":5,"forks_count":22,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-05-20T00:59:27.213Z","etag":null,"topics":["analytics","ci-cd","cloud","deployment-platform","devops","docker","error-tracking","monitoring","open-source","paas","pingora","rust","self-hosted","self-hosting","session-replay"],"latest_commit_sha":null,"homepage":"https://temps.sh/docs","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gotempsh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-21T10:30:44.000Z","updated_at":"2026-05-19T05:05:09.000Z","dependencies_parsed_at":"2025-10-22T09:35:44.570Z","dependency_job_id":null,"html_url":"https://github.com/gotempsh/temps","commit_stats":null,"previous_names":["gotempsh/temps"],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/gotempsh/temps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotempsh%2Ftemps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotempsh%2Ftemps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotempsh%2Ftemps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotempsh%2Ftemps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gotempsh","download_url":"https://codeload.github.com/gotempsh/temps/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gotempsh%2Ftemps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33453597,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analytics","ci-cd","cloud","deployment-platform","devops","docker","error-tracking","monitoring","open-source","paas","pingora","rust","self-hosted","self-hosting","session-replay"],"created_at":"2026-01-03T02:15:28.444Z","updated_at":"2026-05-24T23:08:46.124Z","avatar_url":"https://github.com/gotempsh.png","language":"Rust","funding_links":[],"categories":["Applications","Rust"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"web/public/logo/temps-logo-dark.png\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"web/public/logo/temps-logo-light.png\"\u003e\n  \u003cimg alt=\"Temps\" src=\"web/public/logo/temps-logo-dark.png\" width=\"280\"\u003e\n\u003c/picture\u003e\n\n### The open-source, self-hosted deployment platform.\n### Deploy, observe, and scale -- from a single binary.\n\n[![License](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE)\n[![GitHub Release](https://img.shields.io/github/v/release/gotempsh/temps)](https://github.com/gotempsh/temps/releases)\n[![Rust](https://img.shields.io/badge/rust-1.70%2B-orange.svg)](https://www.rust-lang.org/)\n[![GitHub Stars](https://img.shields.io/github/stars/gotempsh/temps?style=social)](https://github.com/gotempsh/temps)\n\n[Website](https://temps.sh) | [Documentation](https://temps.sh/docs) | [Quick Start](https://temps.sh/docs/introduction) | [GitHub](https://github.com/gotempsh/temps)\n\n\u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"temps-demo.gif\" alt=\"Temps — from bare server to deployed in under 3 minutes\" width=\"800\" /\u003e\n  \u003cbr /\u003e\n  \u003cem\u003eFrom bare server to fully deployed — in under 3 minutes (166s).\u003c/em\u003e\n\u003c/p\u003e\n\n```bash\ncurl -fsSL https://temps.sh/deploy.sh | bash\n```\n\n![Temps Dashboard](assets/screenshots/dashboard.png)\n\nStop 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.\n\n---\n\n## Features\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Git Push to Deploy**\nPush to Git, Temps builds and deploys. Auto-detects frameworks, creates preview URLs, and handles zero-downtime rollouts.\n\n![Deployments](assets/screenshots/deployments.png)\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Built-in Analytics \u0026 Session Replay**\nWeb analytics with funnels, visitor tracking, and session replay (rrweb). Sentry-compatible error tracking. No external services.\n\n![Analytics](assets/screenshots/analytics.png)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Pingora-Powered Proxy**\nRuns on Cloudflare's Pingora engine. Auto TLS via Let's Encrypt (HTTP-01 \u0026 DNS-01), custom domains, and full request logging.\n\n![Domains](assets/screenshots/domains.png)\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Managed Services**\nProvision Postgres, Redis, S3 (MinIO), and MongoDB alongside your apps. Temps handles creation, backups, and teardown.\n\n![Monitoring](assets/screenshots/monitoring-detail.png)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Request Logs \u0026 Proxy Visibility**\nEvery HTTP request logged with method, path, status, response time, and routing metadata. Filter and search without extra tooling.\n\n![Proxy Logs](assets/screenshots/proxy-logs.png)\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Monitoring \u0026 Alerts**\nMonitors for deploy failures, runtime crashes, certificate expiry, and backup health. Get notified before problems reach users.\n\n![Project Overview](assets/screenshots/project-overview.png)\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\"\u003e\n\n**Transactional Email**\nAdd sender domains with DKIM records through the UI. Send transactional emails via `@temps-sdk/node-sdk`. No external email service needed.\n\n\u003c/td\u003e\n\u003ctd width=\"50%\"\u003e\n\n**AI-Ready (MCP Server)**\nShip with a Model Context Protocol server (`@temps-sdk/mcp`) so AI agents can deploy, monitor, and manage your infrastructure through natural language.\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n### Works with your stack\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://nextjs.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/Next.js-000?logo=nextdotjs\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Next.js\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://vitejs.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Vite-646CFF?logo=vite\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Vite\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://go.dev\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-00ADD8?logo=go\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Go\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://python.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-3776AB?logo=python\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Python\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://rust-lang.org\"\u003e\u003cimg src=\"https://img.shields.io/badge/Rust-000?logo=rust\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Rust\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://java.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Java-ED8B00?logo=openjdk\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Java\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://dotnet.microsoft.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/.NET-512BD4?logo=dotnet\u0026logoColor=fff\u0026style=for-the-badge\" alt=\".NET\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://nestjs.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/NestJS-E0234E?logo=nestjs\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"NestJS\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://docker.com\"\u003e\u003cimg src=\"https://img.shields.io/badge/Dockerfile-2496ED?logo=docker\u0026logoColor=fff\u0026style=for-the-badge\" alt=\"Docker\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cem\u003eAny language, any framework. Auto-detected or bring your own Dockerfile.\u003c/em\u003e\u003c/p\u003e\n\n---\n\n## Quick Start\n\n```bash\ncurl -fsSL https://temps.sh/deploy.sh | bash\n```\n\n**Tested on:** Ubuntu 24.04 / 22.04 \u0026nbsp;|\u0026nbsp; Also works on macOS\n\n---\n\n## What Temps replaces\n\n| What you get | Instead of paying for |\n|---|---|\n| Git deployments + preview URLs | Vercel / Netlify / Railway ($20+/mo) |\n| Web analytics + funnels | PostHog / Plausible ($0-450/mo) |\n| Session replay | PostHog / FullStory ($0-2000/mo) |\n| Error tracking | Sentry ($26+/mo) |\n| Uptime monitoring | Better Uptime / Pingdom ($20+/mo) |\n| Managed Postgres/Redis/S3 | AWS RDS / ElastiCache ($50+/mo) |\n| Transactional email + DKIM | Resend / SendGrid ($20-100/mo) |\n| Request logs + proxy | Cloudflare ($0-200/mo) |\n| **Total with Temps** | **$0 (self-hosted)** |\n\n---\n\n## Temps vs. Alternatives\n\n| Feature | Temps | Coolify | Dokploy | CapRover | Dokku | Railway | Vercel |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|\n| Self-hosted | Yes | Yes | Yes | Yes | Yes | No | No |\n| Single binary install | Yes | No | No | No | No | -- | -- |\n| Git push deploy | Yes | Yes | Yes | Yes | Yes | Yes | Yes |\n| Multi-node / clustering | No | Yes | Yes | Yes | No | Yes | Yes |\n| Web analytics | Yes | No | No | No | No | Yes | Yes |\n| Session replay | Yes | No | No | No | No | No | No |\n| Error tracking (Sentry-compatible) | Yes | No | No | No | No | No | No |\n| Uptime monitoring | Yes | No | No | No | No | No | No |\n| Transactional email + DKIM | Yes | No | No | No | No | No | No |\n| Managed Postgres/Redis/S3 | Yes | Yes | Yes | Partial | Plugin | Yes | Add-on |\n| Pingora proxy (Cloudflare-grade) | Yes | No | No | No | No | No | No |\n| Auto TLS (HTTP-01 + DNS-01) | Yes | Yes | Yes | Yes | Plugin | Yes | Yes |\n| Request-level logging | Yes | No | No | No | No | Partial | Partial |\n| Preview deployments | Yes | Yes | Yes | No | No | Yes | Yes |\n| Built with Rust | Yes | No | No | No | No | No | No |\n| Free \u0026 open source | Yes | Yes | Yes | Yes | Yes | No | No |\n\n---\n\n## Tech Stack\n\n- **Backend:** Rust, Axum, Sea-ORM, Pingora (Cloudflare's proxy engine), Bollard (Docker API)\n- **Frontend:** React 19, TypeScript, Tailwind CSS, shadcn/ui\n- **Database:** PostgreSQL + TimescaleDB\n- **Architecture:** 30+ workspace crates, three-layer service architecture\n\n---\n\n## SDKs\n\n| Package | Description |\n|---|---|\n| [`@temps-sdk/node-sdk`](https://www.npmjs.com/package/@temps-sdk/node-sdk) | Platform API client + Sentry-compatible error tracking |\n| [`@temps-sdk/react-analytics`](https://www.npmjs.com/package/@temps-sdk/react-analytics) | React analytics, session replay, Web Vitals, engagement tracking |\n| [`@temps-sdk/kv`](https://www.npmjs.com/package/@temps-sdk/kv) | Serverless key-value store |\n| [`@temps-sdk/blob`](https://www.npmjs.com/package/@temps-sdk/blob) | File storage (S3-compatible) |\n| [`@temps-sdk/cli`](https://www.npmjs.com/package/@temps-sdk/cli) | Command-line interface |\n| [`@temps-sdk/mcp`](https://www.npmjs.com/package/@temps-sdk/mcp) | Model Context Protocol server for AI agents |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eQuick examples\u003c/strong\u003e\u003c/summary\u003e\n\n**Analytics** -- wrap your React app, everything else is automatic:\n\n```tsx\nimport { TempsAnalyticsProvider } from '@temps-sdk/react-analytics';\n\nexport default function App({ children }) {\n  return \u003cTempsAnalyticsProvider\u003e{children}\u003c/TempsAnalyticsProvider\u003e;\n}\n```\n\n**Error tracking** -- Sentry-compatible, drop-in replacement:\n\n```typescript\nimport { ErrorTracking } from '@temps-sdk/node-sdk';\n\nErrorTracking.init({ dsn: 'https://key@your-instance.temps.dev/1' });\n\ntry {\n  riskyOperation();\n} catch (error) {\n  ErrorTracking.captureException(error);\n}\n```\n\n**KV store** -- Redis-like API, zero config:\n\n```typescript\nimport { kv } from '@temps-sdk/kv';\n\nawait kv.set('user:123', { name: 'Alice', plan: 'pro' }, { ex: 3600 });\nconst user = await kv.get('user:123');\n```\n\n**Blob storage** -- upload and serve files:\n\n```typescript\nimport { blob } from '@temps-sdk/blob';\n\nconst { url } = await blob.put('avatars/user-123.png', fileBuffer);\nconst files = await blob.list({ prefix: 'avatars/' });\n```\n\n\u003c/details\u003e\n\n---\n\n## Contributing\n\nWe welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n```bash\ngit clone https://github.com/gotempsh/temps.git\ncd temps\ncargo build --release\n```\n\n---\n\n## License\n\nDual-licensed under [MIT](LICENSE-MIT) or [Apache 2.0](LICENSE).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n[temps.sh](https://temps.sh) | [Documentation](https://temps.sh/docs) | [GitHub](https://github.com/gotempsh/temps)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotempsh%2Ftemps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgotempsh%2Ftemps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgotempsh%2Ftemps/lists"}