{"id":13813557,"url":"https://github.com/piqoni/inxidents","last_synced_at":"2026-02-28T08:36:10.513Z","repository":{"id":197073740,"uuid":"694376651","full_name":"piqoni/inxidents","owner":"piqoni","description":"Incident Monitoring for the Lean and Mean ;) ","archived":false,"fork":false,"pushed_at":"2024-01-29T19:51:54.000Z","size":84,"stargazers_count":42,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-30T16:15:16.052Z","etag":null,"topics":["devops","go","incident","incident-management","incident-response","monitoring","open-source"],"latest_commit_sha":null,"homepage":"https://inxidents.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/piqoni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-20T22:01:39.000Z","updated_at":"2025-02-06T09:24:35.000Z","dependencies_parsed_at":"2023-10-16T11:05:34.268Z","dependency_job_id":"62dc0785-71de-4ca0-9f2b-8748df026d75","html_url":"https://github.com/piqoni/inxidents","commit_stats":{"total_commits":70,"total_committers":2,"mean_commits":35.0,"dds":"0.014285714285714235","last_synced_commit":"250e10a4b251f1b1d557a8eaa48afadfdab46a6b"},"previous_names":["piqoni/inxidents"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/piqoni/inxidents","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piqoni%2Finxidents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piqoni%2Finxidents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piqoni%2Finxidents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piqoni%2Finxidents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/piqoni","download_url":"https://codeload.github.com/piqoni/inxidents/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piqoni%2Finxidents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29928981,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["devops","go","incident","incident-management","incident-response","monitoring","open-source"],"created_at":"2024-08-04T04:01:21.328Z","updated_at":"2026-02-28T08:36:10.501Z","avatar_url":"https://github.com/piqoni.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e in⧕idents \u003c/h1\u003e\n\u003cdiv align=\"center\"\u003e\u003cp\u003e\n    \u003ca href=\"https://github.com/piqoni/inxidents/pulse\"\u003e\n      \u003cimg alt=\"Last commit\" src=\"https://img.shields.io/github/last-commit/piqoni/inxidents?style=for-the-badge\u0026logo=starship\u0026color=8bd5ca\u0026logoColor=D9E0EE\u0026labelColor=302D41\"/\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/piqoni/inxidents/blob/main/LICENSE\"\u003e\n      \u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/piqoni/inxidents?style=for-the-badge\u0026logo=starship\u0026color=ee999f\u0026logoColor=D9E0EE\u0026labelColor=302D41\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://github.com/piqoni/inxidents/stargazers\"\u003e\n      \u003cimg alt=\"Stars\" src=\"https://img.shields.io/github/stars/piqoni/inxidents?style=for-the-badge\u0026logo=starship\u0026color=c69ff5\u0026logoColor=D9E0EE\u0026labelColor=302D41\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\nInxidents is a minimal configuration, open-source incident monitoring software with alerts and dashboard for your HTTP/S services written in Go.\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"https://github.com/piqoni/inxidents/assets/3144671/8d2e6800-774e-4d8b-8cab-65e61d16328e\"\u003e\u003c/img\u003e\n\u003c/p\u003e\n\n**Current Features:**\n- **Real-time (SSE) Health Dashboard** of your services. Perfect for office screens or similar environments.\n- **Slack Alerts** whenever a service goes down 🟥 and recovers 🟩.\n- **ACK** feature (acknowledge a down service will stop further notifications and will display corresponding service with black and yellow pattern 🚧)\n\u003c!-- \u003cimg width=\"449\" alt=\"image\" align=\"right\" src=\"https://github.com/piqoni/inxidents/assets/3144671/1d015cca-4ac3-4b45-9380-d8b3cd1cadea\"\u003e --\u003e\n- Types of checks: GET/POST, StatusCode, containsString (check if certain text is in the response body)\n- Visually see the **frequency** of the healthcheck (the white progressbar animation)\n- Small project with **simple configuration**. Easy to hack, deploy and further extend for your needs.\n\n\n**Upcoming features:**\n- Private/unique URLs for dashboards\n- ... ideas and suggestions are welcome\n\n# Demo\n\u003cimg width=\"1440\" alt=\"image\" src=\"https://github.com/piqoni/inxidents/assets/3144671/35d1333b-6768-4017-bd15-f382eecee7cc\"\u003e\n\n# Installation / Deployment\n1. ```cp config.dev.yaml config.yaml```\n2. Change config.yaml accordingly and add your services:\nExample configuration of one service: \n```\n- name: Google\n  endpoint: https://www.google.com\n  frequency: 1m\n  expectedCode: 200\n```\n- **name**: Name of service, currently it needs to be unique for each service you check. \n- **endpoint**: HTTP/S endpoint\n- **frequency**:  Frequency of the health check, examples: \"300ms\", \"2h45m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\".\n- **expectedCode**: This is the expected http status code returned from the endpoint. \n- **httpMethod**: OPTIONAL - write POST if you are testing POST http Methods. \n- **containsString**: OPTIONAL - Check if given string exists in the response body. Value type, string: \"FAQ\" \n- **disableAlerts**: OPTIONAL - For some services one might want only the dashboard and not alerts, set true to those, default is false.\n- **userAgent**: OPTIONAL - Set custom user-agent to requests checking the services. \n\n3. To get Slack alerts, add an environmental variable called **SLACK_WEBHOOK_URL** containing the incoming slack webhook url. [More info on it here](https://api.slack.com/messaging/webhooks)\n\n## Deploy on fly.io\n1. Install [flytcl](https://fly.io/docs/hands-on/install-flyctl/)\n2. Run ```flyctl launch```(answer no to DB or Volume creations)\n3. Run ```flyctl deploy``` to deploy\n\nTo enable Slack alerts when deploying to fly.io you can add the SLACK_WEBHOOK_URL in the fly.toml file\n```\n[env]\n   SLACK_WEBHOOK_URL = \"YOUR INCOMING SLACK WEBHOOK URL\"\n```\n\n## Deploy using Docker\nPull [inxidents image](https://hub.docker.com/r/piqoni/inxidents) from dockerhub:\n```\ndocker pull piqoni/inxidents\n```\n\nCreate a directory anywhere in you system and then put your inxidents [config.yaml](https://github.com/piqoni/inxidents/blob/main/config.dev.yaml) file, for example `MYDIR/config.yaml`.\n\nRun the container (-e SLACK_WEBHOOK_URL is optional, only if you want alerts):\n```\ndocker run \\\n  -p 8080:8080 \\\n  -v /PATH/TO/YOUR/MYDIR:/app \\\n  -e SLACK_WEBHOOK_URL=YOUR_SLACK_WEBHOOK_URL_HERE \\\n  piqoni/inxidents\n```\nAccess the dashboard on http://localhost:8080\n\n## Tech comments / Architecture\nThere is no database by design for the time being (if needed in the future, it will likely be SQLite). Apart from the configuration file everything else happens in-memory. The only persistent data history (downtimes history) can be found on Slack alerts and application log files. \n```mermaid\nflowchart TB\n  subgraph MainThread\n    Main[read services in config.yaml]\n  end\n\n  subgraph Always Running Goroutines\n    Service1[Service 1 Check]\n    Service2[Service 2 Check]\n    Service3[Service 3 Check]\n    SendAlerts[When check fails/recovers]\n  end\n\n  Main --\u003e|goroutine 1| Service1\n  Main --\u003e|goroutine 2| Service2\n  Main --\u003e|goroutine 3| Service3\n  SendAlerts --\u003e|Alert Message| Slack\nsubgraph Browser Dashboard\n  Service1 --\u003e|SSE Stream| EventSource\n  Service2 --\u003e|SSE Stream| EventSource\n  Service3 --\u003e|SSE Stream | EventSource\nend\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiqoni%2Finxidents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpiqoni%2Finxidents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiqoni%2Finxidents/lists"}