{"id":13527748,"url":"https://github.com/immobiliare/peephole","last_synced_at":"2025-10-25T11:31:25.874Z","repository":{"id":149567071,"uuid":"416359738","full_name":"immobiliare/peephole","owner":"immobiliare","description":"SaltStack transactions tracker","archived":false,"fork":false,"pushed_at":"2025-02-03T17:27:06.000Z","size":476,"stargazers_count":33,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-03T18:35:27.177Z","etag":null,"topics":["automation","configuration-management","event-stream","golang","infrastructure-as-code","salt","salt-api","salt-master","saltstack"],"latest_commit_sha":null,"homepage":"","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/immobiliare.png","metadata":{"files":{"readme":".github/README.md","changelog":null,"contributing":".github/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":"2021-10-12T13:59:15.000Z","updated_at":"2025-02-03T17:27:07.000Z","dependencies_parsed_at":"2024-01-29T19:17:50.740Z","dependency_job_id":"78c43ebd-d5a9-45ed-b324-e8540cf44ce9","html_url":"https://github.com/immobiliare/peephole","commit_stats":{"total_commits":251,"total_committers":6,"mean_commits":"41.833333333333336","dds":0.3745019920318725,"last_synced_commit":"32d4f7ea4f3bc3f9fd0f4578b1e7a66804548179"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immobiliare%2Fpeephole","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immobiliare%2Fpeephole/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immobiliare%2Fpeephole/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/immobiliare%2Fpeephole/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/immobiliare","download_url":"https://codeload.github.com/immobiliare/peephole/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238128553,"owners_count":19421053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","configuration-management","event-stream","golang","infrastructure-as-code","salt","salt-api","salt-master","saltstack"],"created_at":"2024-08-01T06:01:59.714Z","updated_at":"2025-10-25T11:31:20.568Z","avatar_url":"https://github.com/immobiliare.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Peephole \u003ca href=\"#peephole\"\u003e\u003cimg align=\"left\" width=\"100px\" src=\"https://github.com/immobiliare/peephole/blob/master/kiosk/assets/peephole.png\"\u003e\u003c/a\u003e\n\n[![pipeline status](https://github.com/immobiliare/peephole/actions/workflows/test.yml/badge.svg)](https://github.com/immobiliare/peephole/actions/workflows/test.yml)\n\nPeephole is a web-based events explorer of [SaltStack](https://github.com/saltstack/salt) transactions.\n\nIt can be used to watch for events on several [SaltStack](https://github.com/saltstack/salt) master nodes by GETting _from the_ `/events` API endpoint.\nAs soon as events are watched, they get persisted into a local (auto-expiring and configurable) cache that allows to explore, filter and correlate events for a variable time interval.\n\n![Peephole homepage](https://github.com/immobiliare/peephole/blob/master/.github/sample-1.png)\n\n![Peephole detail](https://github.com/immobiliare/peephole/blob/master/.github/sample-2.png)\n\n## Table of Contents\n\n- [Install](#install)\n- [Usage](#usage)\n- [Changelog](#changelog)\n- [Contributing](#contributing)\n- [Issues](#issues)\n- [Powering](#powering)\n\n## Install\n\nEither install using Docker:\n\n```bash\ndocker pull ghcr.io/immobiliare/peephole:latest\n```\n\nOr build it yourself:\n\n```bash\ngit clone https://github.com/immobiliare/peephole.git\ncd peephole\nmake build\n```\n\n## Usage\n\nFirst off, create a configuration file `config.yml` accordingly.\nThe sample [example.yml](../example.yml) file can be used as a reference.\n\nEither run it with Docker:\n\n```bash\ndocker run -v ${PWD}/config.yml:/etc/peephole \\\n  -p 8080:8080 ghcr.io/immobiliare/peephole:latest\n```\n\nOr using the manually built binary file:\n\n```bash\n./peephole -c config.yml\n```\n\nClearly, for each SaltMaster defined in the configuration file, ensure to enable [`salt-api`](https://docs.saltproject.io/en/latest/ref/cli/salt-api.html) capabilities.\n\n## Changelog\n\nSee [changelog](./CHANGELOG.md).\n\n## Contributing\n\nSee [contributing](./CONTRIBUTING.md).\n\n## Issues\n\nYou found a bug or need a new feature? Please \u003ca href=\"https://github.com/immobiliare/peephole/issues/new\" target=\"_blank\"\u003eopen an issue.\u003c/a\u003e\n\n## Powering\n\nWhat led to the use of Go as the engine for Peephole is mainly the flow of the app itself: fetching data externally from possibily several sources concurrently, to feed a cache with, as well as a pool of several clients.\nGo's flexibility on intra-process channel-based communication between goroutines is a very solid paradigm to base the whole app flow on.\nThat is very crucial in the context for which it's been designed, which is huge.\n\nIn fact, Peephole is currently used internally in the SRE / systems teams at Immobiliare to keep an eye on and soften the burden of administering a pool of servers of the order of thousands, fetching events from tens of Salt masters.\n\n**If you feel like using it as well, please, let us know!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmobiliare%2Fpeephole","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimmobiliare%2Fpeephole","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimmobiliare%2Fpeephole/lists"}