{"id":36564445,"url":"https://github.com/enyineer/checkstack","last_synced_at":"2026-04-23T20:00:48.009Z","repository":{"id":329420462,"uuid":"1119517005","full_name":"enyineer/checkstack","owner":"enyineer","description":"Checkstack is a modern health monitor built for scale and easy integration.","archived":false,"fork":false,"pushed_at":"2026-04-18T22:20:52.000Z","size":7112,"stargazers_count":10,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-19T00:40:19.881Z","etag":null,"topics":["health-check","monitoring-tool","plugin-architecture","scalable-architecture"],"latest_commit_sha":null,"homepage":"https://checkstack.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/enyineer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/auth-error-handling.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["enyineer"],"buy_me_a_coffee":"enyineer"}},"created_at":"2025-12-19T11:52:29.000Z","updated_at":"2026-04-18T22:12:58.000Z","dependencies_parsed_at":"2026-01-12T07:01:06.389Z","dependency_job_id":null,"html_url":"https://github.com/enyineer/checkstack","commit_stats":null,"previous_names":["enyineer/checkmate"],"tags_count":1186,"template":false,"template_full_name":null,"purl":"pkg:github/enyineer/checkstack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enyineer%2Fcheckstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enyineer%2Fcheckstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enyineer%2Fcheckstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enyineer%2Fcheckstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/enyineer","download_url":"https://codeload.github.com/enyineer/checkstack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/enyineer%2Fcheckstack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32196155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T15:28:30.493Z","status":"ssl_error","status_checked_at":"2026-04-23T15:28:29.972Z","response_time":53,"last_error":"SSL_read: 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":["health-check","monitoring-tool","plugin-architecture","scalable-architecture"],"created_at":"2026-01-12T06:55:28.661Z","updated_at":"2026-04-23T20:00:47.988Z","avatar_url":"https://github.com/enyineer.png","language":"TypeScript","funding_links":["https://github.com/sponsors/enyineer","https://buymeacoffee.com/enyineer"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ch1 align=\"center\"\u003e🏁 Checkstack\u003c/h1\u003e\n  \u003cp align=\"center\"\u003e\n    \u003cstrong\u003eThe Modern Status Page \u0026 Monitoring Platform\u003c/strong\u003e\n  \u003c/p\u003e\n  \u003cp align=\"center\"\u003e\n    Monitor your systems. Keep users informed. Maintain trust.\n  \u003c/p\u003e\n\u003c/p\u003e\n\n![Checkstack Logo](assets/logo/checkstack-logo.jpg)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/status-alpha-orange?style=flat-square\" alt=\"Alpha Status\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/runtime-bun-f9f1e1?style=flat-square\u0026logo=bun\" alt=\"Bun Runtime\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/frontend-react-61dafb?style=flat-square\u0026logo=react\" alt=\"React\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/database-postgresql-336791?style=flat-square\u0026logo=postgresql\" alt=\"PostgreSQL\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-ELv2-blue?style=flat-square\" alt=\"Elastic License 2.0\" /\u003e\n\u003c/p\u003e\n\n---\n\n\u003e [!WARNING]\n\u003e Checkstack is currently in **alpha** and is not ready for production use.\n\u003e\n\u003e Breaking changes are to be expected regularly in this development phase. We're still happy if you try it out and give us feedback!\n\n## 📸 Screenshots\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🏠 Dashboard \u0026 Navigation\u003c/strong\u003e\u003c/summary\u003e\n\n### Dashboard\nThe central hub showing all your systems with real-time health status badges, recent activity feed, and quick access to key functions.\n![Dashboard](assets/screenshots/dashboard.png)\n\n### Command Palette\nLightning-fast keyboard-driven navigation with `Ctrl+K` / `Cmd+K`. Search for systems, actions, and settings instantly. Fully extensible by plugins.\n![Command Palette](assets/screenshots/command-palette.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e✅ Health Checks\u003c/strong\u003e\u003c/summary\u003e\n\n### Health Check Configuration\nConfigure automated monitoring with strategy-specific settings. Supports HTTP, TCP, DNS, TLS, PostgreSQL, MySQL, Redis, gRPC, RCON, SSH, and custom scripts.\n![Health Check Configuration](assets/screenshots/healthcheck-config.png)\n\n### Flexible Assertions\nDefine custom success criteria with multiple assertion types: status codes, response times, content matching, numeric comparisons, and more.\n![Health Check Assertions](assets/screenshots/healthcheck-config-assertion.png)\n\n### System Details with Health Status\nComprehensive system view showing current health status, historical performance charts with response times, and detailed check results.\n![System Details](assets/screenshots/system-details.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🚨 Incidents \u0026 Maintenance\u003c/strong\u003e\u003c/summary\u003e\n\n### Incident Management\nTrack and document unplanned outages. Create timeline updates, link affected systems, and keep stakeholders informed in real-time.\n![Incident Management](assets/screenshots/incident-management.png)\n\n### Incident Details\nRich incident timeline with status updates, affected systems, and full history. Changes are broadcast instantly via WebSocket.\n![Incident Details](assets/screenshots/incident-details.png)\n\n### Maintenance Windows\nSchedule planned maintenance with automatic status transitions from \"Planned\" → \"Active\" → \"Completed\". Subscribers are notified automatically.\n![Maintenance Management](assets/screenshots/maintenance-management.png)\n\n### Maintenance Details\nDetailed maintenance view showing schedule, affected systems, and status history. Link multiple systems to a single maintenance window.\n![Maintenance Details](assets/screenshots/maintenance-details.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📋 Catalog \u0026 Notifications\u003c/strong\u003e\u003c/summary\u003e\n\n### System Catalog\nOrganize your infrastructure into Systems and Groups. Track dependencies, assign owners, and maintain a clear inventory of all monitored services.\n![Catalog Management](assets/screenshots/catalog-management.png)\n\n### In-App Notification Bell\nReal-time notification center accessible from any page. Shows unread count badge and instant updates via WebSocket.\n![In-App Notification Bell](assets/screenshots/in-app-notification-bell.png)\n\n### In-App Notification Overview\nFull notification history with read/unread tracking. Mark individual notifications or all as read with a single click.\n![In-App Notification Overview](assets/screenshots/in-app-notification-overview.png)\n\n### Notifications Configuration\nConfigure multi-channel notification delivery: SMTP, Telegram, Microsoft Teams, Webex, Discord, Slack, Gotify, and Pushover. User-specific settings per channel.\n![Notifications Management](assets/screenshots/notifications-management.png)\n\n### Telegram Integration Example\nExample of rich notification delivery via Telegram with formatted messages and direct links to affected systems.\n![Telegram Notification](assets/screenshots/example-telegram-notification.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🔌 Integrations \u0026 Queues\u003c/strong\u003e\u003c/summary\u003e\n\n### External Integrations\nConnect Checkstack to external systems like Jira, Microsoft Teams, Webex, and custom webhooks. Event-driven architecture enables automated workflows.\n![Integration Management](assets/screenshots/integration-management.png)\n\n### Queue Management\nMonitor background job processing with real-time statistics. View scheduling lag, worker concurrency, and job queue status. Built-in lag warnings for health monitoring.\n![Queue Management](assets/screenshots/queue-management.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e🔐 Authentication \u0026 Security\u003c/strong\u003e\u003c/summary\u003e\n\n### User \u0026 Role Management\nManage users with flexible role assignments. Support for both local accounts and external identity provider users (SAML, LDAP, GitHub OAuth).\n![User Role Management](assets/screenshots/user-role-management.png)\n\n### Role-Based Access Control\nDefine custom roles with granular permissions. Assign platform-wide access rules and combine with team-based resource-level access control.\n![Role Access Management](assets/screenshots/role-access-management.png)\n\n### Team Management\nOrganize users into logical teams for resource-level access control. Designate team managers and assign API keys to teams for automated workflows.\n![Team Management](assets/screenshots/team-management.png)\n\n### Authentication Strategies\nConfigure multiple authentication methods: Credential Login, GitHub OAuth, SAML 2.0 SSO, and LDAP/AD. Includes directory group-to-role mapping for enterprise SSO.\n![Authentication Strategies](assets/screenshots/auth-strategies.png)\n\n### External Applications\nCreate API keys (service accounts) for machine-to-machine access. Full RBAC permission control and optional team assignment for scoped access.\n![External Applications](assets/screenshots/applications.png)\n\n### Profile Management\nUsers can update their profile information including name and email (for credential users). Credential users can also change their password from this page.\n![Profile Management](assets/screenshots/profile-management.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📖 API Documentation\u003c/strong\u003e\u003c/summary\u003e\n\n### Built-in API Docs\nInteractive API documentation. Explore all available endpoints and view response schemas directly in the browser.\n![API Documentation](assets/screenshots/api-docs.png)\n\n\u003c/details\u003e\n\n---\n\n## ✨ What is Checkstack?\n\n**Checkstack** is a self-hosted, open-source status page and monitoring platform that helps you:\n\n- 📊 **Monitor** your services with automated health checks\n- 📢 **Communicate** incidents and maintenance to your users\n- 🔔 **Notify** stakeholders through multiple channels instantly\n- 🔌 **Integrate** with your existing tools and workflows\n\nThink of it as your all-in-one solution for operational visibility - combining the power of a status page, uptime monitoring, and incident management into a single, extensible platform.\n\n## 🚀 Key Features\n\n### System Catalog\n\u003e *Your single source of truth for all monitored services*\n\nOrganize your infrastructure into **Systems** and **Groups**. Track dependencies, assign owners, and maintain a clear inventory of everything that matters.\n\n---\n\n### Health Checks\n\u003e *Know when things break - before your users do*\n\n**Built-in Check Types:**\n\n| Category | Provider | Description |\n|----------|----------|-------------|\n| **Network** | HTTP/HTTPS | Endpoint monitoring with status codes, headers, body assertions |\n| | Ping (ICMP) | Network reachability with packet loss and latency tracking |\n| | TCP | Port connectivity with banner reading support |\n| | DNS | Record resolution (A, AAAA, CNAME, MX, TXT, NS) |\n| | TLS/SSL | Certificate expiry, chain validation, issuer verification |\n| **Database** | PostgreSQL | Connection testing, custom queries, row count assertions |\n| | MySQL | Connection testing, custom queries, row count assertions |\n| | Redis | PING latency, server role detection, version checking |\n| **Protocol** | gRPC | Standard Health Checking Protocol (grpc.health.v1) |\n| | RCON | Game server monitoring (Minecraft, CS:GO/CS2) with player counts |\n| **Scripted** | SSH | Remote command execution with exit code validation |\n| | Script | Local command/script execution with output parsing |\n\n**Features:**\n- ⚡ **Flexible Assertions** - Validate response time, status, content, numeric comparisons\n- 📊 **Historical Data** - Multi-tier storage with automatic aggregation for trend analysis\n- 🔌 **Pluggable Architecture** - Create custom check strategies for any protocol\n\n---\n\n### Incident Management\n\u003e *Handle the unexpected with clarity*\n\n- **Incident Tracking** - Document unplanned outages with status updates\n- **Timeline Updates** - Keep stakeholders informed as situations evolve\n- **Affected Systems** - Link incidents to impacted services\n- **Realtime Updates** - Changes broadcast instantly via WebSocket\n\n---\n\n### Maintenance Windows\n\u003e *Communicate planned work proactively*\n\n- **Scheduled Maintenance** - Plan ahead with start/end times\n- **Automatic Transitions** - Status changes from \"Planned\" → \"Active\" → \"Completed\"\n- **Multi-System Impact** - Associate maintenance with multiple affected services\n- **User Notifications** - Alert subscribers before and during maintenance\n\n---\n\n### Multi-Channel Notifications\n\u003e *Reach people where they are*\n\n| Channel | Description |\n|---------|-------------|\n| 📧 **SMTP** | Email notifications with templated content |\n| 💬 **Telegram** | Instant messaging with rich formatting |\n| 💼 **Microsoft Teams** | Personal chat messages via Microsoft Graph API |\n| 🌐 **Webex** | Direct messages through Cisco Webex |\n| 🎮 **Discord** | Webhook notifications with rich embeds |\n| 💬 **Slack** | Incoming webhooks with Block Kit formatting |\n| 🔔 **Gotify** | Self-hosted push notifications |\n| 📱 **Pushover** | Mobile push notifications with priority levels |\n| 🔔 **In-App** | Realtime notification center with read/unread tracking |\n\nSubscribe users to systems and automatically notify them on status changes.\n\n---\n\n### External Integrations\n\u003e *Connect to your existing ecosystem*\n\n| Integration | Use Case |\n|-------------|----------|\n| 🎫 **Jira** | Auto-create tickets from incidents |\n| 💼 **Microsoft Teams** | Post to channels and manage conversations |\n| 🌐 **Webex** | Post to Webex spaces with Adaptive Cards |\n| 🔗 **Webhooks** | Custom HTTP callbacks for any event |\n\nEvent-driven architecture means you can react to health changes, incidents, and maintenance with automated workflows.\n\n---\n\n### API \u0026 Automation\n\u003e *Integrate programmatically with your infrastructure*\n\nCheckstack exposes a comprehensive REST API that enables external systems to interact with the platform programmatically via **API keys** (service accounts):\n\n| Use Case | Description |\n|----------|-------------|\n| 🚨 **Monitoring Alerts** | Prometheus, Grafana, or PagerDuty can create/resolve incidents automatically |\n| 🚀 **CI/CD Pipelines** | Schedule maintenance windows during deployments |\n| 🏗️ **Infrastructure as Code** | Terraform, Pulumi, or Ansible can manage systems and groups |\n| ⚙️ **Deployment Scripts** | Configure health checks as part of service provisioning |\n| 🔗 **Custom Integrations** | Any external tool can interact via authenticated API calls |\n\n**Example: Create an incident from an external alerting system**\n```bash\ncurl -X POST https://checkstack.local/api/incident/createIncident \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer ck_\u003cappId\u003e_\u003csecret\u003e\" \\\n  -d '{\"title\": \"High CPU Alert\", \"status\": \"investigating\", \"systemIds\": [\"...\"]}'\n```\n\nAPI keys are managed via **Settings → External Applications** with full RBAC permission control.\n\n---\n\n### Flexible Authentication \u0026 Access Control\n\u003e *Secure access with enterprise-grade granularity*\n\n**Authentication Methods:**\n- **Credential Login** - Built-in username/password with secure password reset\n- **GitHub OAuth** - Single sign-on with GitHub\n- **SAML 2.0** - Enterprise SSO with identity providers (Okta, Azure AD, OneLogin, etc.)\n- **LDAP/AD** - Enterprise directory integration with Active Directory\n- **API Tokens** - Service accounts for machine-to-machine access\n\n**Directory Group-to-Role Mapping:**\n- Automatically assign Checkstack roles based on directory group memberships\n- Configure mappings in SAML/LDAP strategy settings with dynamic role dropdowns\n- Additive sync: directory roles are added without removing manually-assigned roles\n- Optional default role for all users from a specific directory\n\n**Role-Based Access Control (RBAC):**\n- Define custom roles with specific permissions\n- Assign roles to users for platform-wide access rules\n- Preconfigured roles for common use cases (Admin, Viewer, etc.)\n\n**Resource-Level Access Control (RLAC):**\n- Grant teams fine-grained access to individual resources\n- Configure read-only or full management permissions per resource\n- Enable \"Team Only\" mode to restrict resources exclusively to team members\n\n**Team Management:**\n- Organize users into logical teams (e.g., \"Platform Team\", \"API Developers\")\n- Designate **Team Managers** who can manage membership and settings\n- Assign **External Applications** (API keys) to teams for automated workflows\n\n---\n\n### Plugin Architecture\n\u003e *Extend everything*\n\nCheckstack is built from the ground up as a **modular plugin system**:\n\n- 🧩 **Backend Plugins** - Add new APIs, services, database schemas\n- 🎨 **Frontend Plugins** - Extend UI with new pages, components, themes\n- 🔗 **Integration Providers** - Connect to new external services\n- 📡 **Notification Strategies** - Deliver alerts through new channels\n- ✅ **Health Check Strategies** - Monitor services in custom ways\n\n## 🖥️ Technology Stack\n\n| Layer | Technologies |\n|-------|--------------|\n| **Runtime** | [Bun](https://bun.sh) |\n| **Backend** | [Hono](https://hono.dev), [Drizzle ORM](https://orm.drizzle.team), [PostgreSQL](https://postgresql.org) |\n| **Frontend** | [React](https://react.dev), [Vite](https://vitejs.dev), [TailwindCSS](https://tailwindcss.com), [ShadCN/UI](https://ui.shadcn.com) |\n| **Validation** | [Zod](https://zod.dev) |\n| **Realtime** | WebSocket (native Bun) |\n| **Queue** | BullMQ (Redis) / In-Memory |\n\n## 📦 Deployment\n\n### Docker\n\nThe easiest way to run Checkstack — works for both **production deployment** and **local testing**.\n\n**👉 [Full Docker Getting Started Guide](./docs/getting-started/docker.md)**\n\n#### Quick Start with Docker Compose\n\nThe repository includes a ready-to-use `docker-compose.yml`:\n\n```bash\n# Create .env with required secrets (see docs for details)\n# Then start everything\ndocker compose up -d\n```\n\nTo update to the latest version:\n\n```bash\ndocker compose pull \u0026\u0026 docker compose up -d\n```\n\n#### Single Container\n\nCheckstack requires four environment variables:\n\n| Variable | Description | How to Generate |\n|----------|-------------|-----------------|\n| `DATABASE_URL` | PostgreSQL connection string | Your database provider |\n| `ENCRYPTION_MASTER_KEY` | 64 hex chars (32 bytes) | `openssl rand -hex 32` |\n| `BETTER_AUTH_SECRET` | Min 32 characters | `openssl rand -base64 32` |\n| `BASE_URL` | Exact URL used to access Checkstack in the browser | e.g. `http://192.168.1.123:3000` or `https://status.example.com` |\n\n```bash\n# Pull and run the latest version\ndocker pull ghcr.io/enyineer/checkstack:latest\ndocker run -d \\\n  -e DATABASE_URL=\"postgresql://user:pass@host:5432/checkstack\" \\\n  -e ENCRYPTION_MASTER_KEY=\"$(openssl rand -hex 32)\" \\\n  -e BETTER_AUTH_SECRET=\"$(openssl rand -base64 32)\" \\\n  -e BASE_URL=\"http://192.168.1.123:3000\" \\ \n  -p 3000:3000 \\\n  ghcr.io/enyineer/checkstack:latest\n```\n\n\u003e [!TIP]\n\u003e After first start, you'll have to create your first admin user.\n\u003e\n\u003e Upon opening the page eg. at `http://localhost:3000` you'll be greeted with a signup form.\n\n\n### NPM Packages\n\nAll `@checkstack/*` packages are published to npm for plugin developers.\n\n\u003e ⚠️ **Bun Required**: These packages publish TypeScript source directly and require [Bun](https://bun.sh) runtime. They are **not compatible with Node.js**.\n\n```bash\n# Example: Install packages for a custom plugin\nbun add @checkstack/backend-api @checkstack/common\n```\n\n## 🏃 Development Setup\n\n\u003e For **contributors** and **plugin developers**. For just running Checkstack, use [Docker](#docker) instead.\n\n### Prerequisites\n\n- [Bun](https://bun.sh) installed\n- [Docker Desktop](https://www.docker.com/products/docker-desktop) running\n\n### Run the Development Environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/enyineer/checkstack.git\ncd checkstack\n\n# Install dependencies\nbun install\n\n# Start everything (Docker + Backend + Frontend)\nbun run dev\n```\n\nThis command will automatically:\n1. 🐳 Start the Docker infrastructure (Postgres \u0026 PgAdmin)\n2. 🔧 Start the Backend server (Port 3000)\n3. 🎨 Start the Frontend server (Vite default port)\n\n\u003e [!TIP]\n\u003e After first start, you'll have to create your first admin user.\n\u003e\n\u003e Upon opening the page eg. at `http://localhost:3000` you'll be greeted with a signup form.\n\n### Infrastructure Details\n\n| Service | URL | Credentials |\n|---------|-----|-------------|\n| **Frontend** | `http://localhost:5173` | - |\n| **Backend API** | `http://localhost:3000` | - |\n| **PgAdmin** | `http://localhost:5050` | `admin@checkstack.com` / `admin` |\n| **PostgreSQL** | `localhost:5432` | `checkstack` / `checkstack` |\n\n```bash\n# Stop Docker containers\nbun run docker:stop\n```\n\n## 📚 Documentation\n\nFor comprehensive guides, API references, and plugin development docs:\n\n**👉 [View Full Documentation](./docs/README.md)**\n\n## 🤝 Contributing\n\nWe welcome contributions! See our [Contributing Guide](./CONTRIBUTING.md) for:\n\n- Development environment setup\n- Code style guidelines\n- Testing requirements\n- Pull request process\n\n## 📄 License\n\nThis project is licensed under the [**Elastic License 2.0**](LICENSE.md).\n\n| Allowed | Not Allowed |\n|---------|-------------|\n| ✅ Internal company use | ❌ Selling as managed SaaS |\n| ✅ Personal projects | ❌ Removing license protections |\n| ✅ Research \u0026 education | |\n| ✅ Modification \u0026 redistribution | |\n| ✅ Building applications on top | |\n\n**Need a commercial license to provide Checkstack as a managed / SaaS service?** [Contact us](mailto:hi@enking.dev)\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eBuilt with ❤️ for reliability engineers everywhere\u003c/sub\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenyineer%2Fcheckstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fenyineer%2Fcheckstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fenyineer%2Fcheckstack/lists"}