{"id":41389638,"url":"https://github.com/tylermumford/localstatus","last_synced_at":"2026-01-23T12:28:22.113Z","repository":{"id":154011433,"uuid":"629813908","full_name":"tylermumford/localstatus","owner":"tylermumford","description":"Automatically monitor your local dev environment (services, repos, and more)","archived":false,"fork":false,"pushed_at":"2023-08-15T20:02:08.000Z","size":703,"stargazers_count":22,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-06-21T04:27:55.599Z","etag":null,"topics":["automation","cli","go","localdevelopment","localhost","monitoring","quality-of-life"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tylermumford.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":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-19T04:44:20.000Z","updated_at":"2023-07-11T21:52:11.000Z","dependencies_parsed_at":"2023-08-18T19:16:53.261Z","dependency_job_id":null,"html_url":"https://github.com/tylermumford/localstatus","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/tylermumford/localstatus","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylermumford%2Flocalstatus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylermumford%2Flocalstatus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylermumford%2Flocalstatus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylermumford%2Flocalstatus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tylermumford","download_url":"https://codeload.github.com/tylermumford/localstatus/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tylermumford%2Flocalstatus/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28691324,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T11:01:27.039Z","status":"ssl_error","status_checked_at":"2026-01-23T11:00:26.909Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["automation","cli","go","localdevelopment","localhost","monitoring","quality-of-life"],"created_at":"2026-01-23T12:28:21.579Z","updated_at":"2026-01-23T12:28:22.108Z","avatar_url":"https://github.com/tylermumford.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LocalStatus\n\n[Docs here](./docs/all.md)\n\nAutomatically monitors the important parts of your local development environment. Not in a fancy way.\nJust in a fifteen-year-old-Honda-Civic kind of way.\n\n* Ping your local services\n* Verify needed files exist\n* Keep an eye on Git repos\n* and more\n\nThis is a work in progress. I use it, but I'd definitely still call it a beta.\nI'm hoping for thoughtful feedback and,\nof course, GitHub stars. 😅 External validation for the win!\n\n## Example\n\nAfter you create `~/.config/localstatus.toml` and define your checks,\nyou can run `localstatus` to perform them.\nWith no arguments, it runs them all once:\n\n```\n/Users/tyler/dev/localstatus: localstatus\n    6 checks to run...\n!   zola check: exit status 101\nOK  /Users/tyler/dev/minesweeper/package.json dependencies\nOK  https://github.com\nOK  Personal website HTTPS: tylermumford.com:443\nOK  localstatus: Up to date with origin/main\nOK  /Users/tyler/.config/localstatus.toml exists (526 bytes)\n1 checks failed\n```\n\nOr, with the `--watch` flag, it keeps going.\nI like to keep a terminal window open all day to keep an eye on everything.\n\n![Screenshot of a terminal window. The first two lines say \"Running every 3 minutes... (press Enter to re-run immmediately; press Ctrl-C to stop)\". The rest is the same as the snippet above.](screenshots/001.png)\n\n## Configuring the checks\n\nLocalStatus is configured with the [TOML format].\nTOML is widely supported and has nice features,\nlike comments and flexible string literals.\n\n[TOML format]: https://toml.io/en/\n\nRight now, LocalStatus only looks for configuration at the hard-coded path of\n`~/.config/localstatus.toml`.\nThis will change and become more flexible in the future.\n\nAll of the available [checks are documented here](./docs/all.md).\n\nThe config looks like this:\n\n```toml\n# ~/.config/localstatus.toml\nchecks = [\n    {check = \"command\", program = \"zola\", args = [\"check\"]},\n    {check = \"npm.install\", package = \"/Users/tyler/dev/minesweeper/package.json\"},\n    {check = \"http.ok\", url = \"https://github.com\"},\n    {check = \"tcp.open\", address = \"tylermumford.com:443\", label = \"Personal website HTTPS\"},\n    {check = \"git.branch\", dir = \"/Users/tyler/dev/localstatus\", base = \"origin/main\"},\n    {check = \"file.exists\", path = \"/Users/tyler/.config/localstatus.toml\"}\n]\n```\n\nThe snippet above is using TOML's inline table syntax to reduce the number of lines.\nThe following snippet uses TOML's \"array of tables\" syntax to have shorter lines.\nBoth snippets are equivalent.\n\n```toml\n[[checks]]\ncheck = \"command\"\nprogram = \"zola\"\nargs = [\"check\"]\ndir  = \"/Users/tyler/dev/tylermumford.github.io\"\n\n[[checks]]\ncheck = \"npm.install\"\npackage = \"/Users/tyler/dev/minesweeper/package.json\"\n\n[[checks]]\ncheck = \"http.ok\"\nurl = \"https://github.com\"\n\n[[checks]]\ncheck = \"tcp.open\"\naddress = \"tylermumford.com:443\"\nlabel = \"Personal website HTTPS\"\n\n[[checks]]\ncheck = \"git.branch\"\ndir = \"/Users/tyler/dev/localstatus\"\nbase = \"origin/main\"\n\n[[checks]]\ncheck = \"file.exists\"\npath = \"/Users/tyler/.config/localstatus.toml\"\n```\n\n## Installing\n\n`brew install tylermumford/brew/localstatus`\n\nOr, download the source and run `go install`\n\n([Scoop] support will be added, too, but it's not ready yet.)\n\n[Scoop]: https://scoop.sh\n\n## Motivation / Rant\n\n😵‍💫\n\nAt work, my local development environment needs to be _just so._ I need to remember to connect to\nthe VPN, run the cloud storage emulator, and check the local status pages of about twelve\nservices in case one of them has a problem. I need to make sure my repositories aren't falling too\nfar behind my team, my database has the latest migrations, and I've run `npm install` since the\nlast update to `package.json`. And there are local files that need to exist even though they aren't\nchecked in to source control.\n\nThat's a lot of moving pieces, so of course, I created a tool to check them all for me.\n\nAlso, I'm just saddened by the trend I've been seeing with more and more systems only being runnable\nin the cloud. If your system doesn't work locally, then you can't do anything when your Internet\ngoes down, or your cloud provider goes down, or your IT department can't get you access to something\nright away. In other words, local development is a \"cause\" I believe in.\n\n## Relevant projects\n\nIf you think LocalStatus is interesting,\nyou might also like these projects:\n\n* [Just] command runner\n* [Uptime Kuma] self-hosted uptime monitoring\n* [Earthly] opinionated build automation\n\n[Just]: https://github.com/casey/just\n[Uptime Kuma]: https://github.com/louislam/uptime-kuma\n[Earthly]: https://github.com/earthly/earthly\n\n## Disclosure\n\nI'm creating this project because I think it needs to exist. I use something similar at work already.\nBut I'm also planning to create some paid macOS and Windows companion apps that will integrate with\nLocalStatus. Those will most likely be closed source. I don't want to sell the project. My hope is\nto create something of value that can earn some money.\n\nThis is my first open source project that I actually hope lots of people will use. But again, it's\nmy first, so please bear with me as I figure this out. 💛\n\n## Trivia\n\n- This project was almost named Brock, because GitHub generated a repo name of \"friendly-broccoli.\"\n- This project was almost named Checkmate, generated by ChatGPT.\n- This project was almost named ldca, for Local Development is Cool Again.\n- This project was almost named Local Host Checker, for the cool acronym LHC.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylermumford%2Flocalstatus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftylermumford%2Flocalstatus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftylermumford%2Flocalstatus/lists"}