{"id":34579878,"url":"https://github.com/jparr721/fsd","last_synced_at":"2026-05-25T21:04:19.694Z","repository":{"id":255706859,"uuid":"850417533","full_name":"jparr721/fsd","owner":"jparr721","description":"A modular file system daemon","archived":false,"fork":false,"pushed_at":"2024-09-16T03:19:07.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-16T03:46:58.246Z","etag":null,"topics":["filesystem","go","inotify","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jparr721.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-08-31T17:59:21.000Z","updated_at":"2024-09-16T03:19:10.000Z","dependencies_parsed_at":"2024-09-13T11:27:21.277Z","dependency_job_id":null,"html_url":"https://github.com/jparr721/fsd","commit_stats":null,"previous_names":["jparr721/fsd"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jparr721/fsd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jparr721%2Ffsd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jparr721%2Ffsd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jparr721%2Ffsd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jparr721%2Ffsd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jparr721","download_url":"https://codeload.github.com/jparr721/fsd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jparr721%2Ffsd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28000513,"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","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"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":["filesystem","go","inotify","rest-api"],"created_at":"2025-12-24T10:00:09.407Z","updated_at":"2025-12-24T10:00:10.181Z","avatar_url":"https://github.com/jparr721.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FSD v1\r\n\r\n## Overview\r\nFSD is a modular file system daemon that communicates over a message-passing protocol. Message passing producers and consumers can be added (support coming soon) to extend the functionality beyond what it currently does. FSD exposes metadata about the entire filesystem (starting from the `rootPath`) via a REST api on `http://localhost:16000` by default. It tracks all file updates and reports useful characteristics like disk usage, file age, etc, that are not readily available to applications on remote hosts. All metadata is stored locally in sqlite, but this data is *ephemeral*, meaning that it can be wiped under arbitrary situations (since it can be trivially regenerated).\r\n\r\n## Goals\r\n1. FSD Should be fast\r\n2. FSD Should be easy\r\n3. FSD Should be extensible\r\n4. FSD Should be reproducible\r\n\r\nFSD is a safe system for processing results from file changes anywhere on your file system, and giving access to those data points as time-series data. The API endpoints provide historical information, but it's up to the ingestion point to derive meaning from that data. All of the compaction intervals are configurable to ensure that data does not balloon in memory. \r\n\r\n## Getting Started\r\nThe recommended way to get started is to first great a dedicated user for `fsd`. This is provided via a helper script in the repository, but it's pretty easy, so you should just do it yourself. You should then copy `defaultconfig.toml` into your `~/.fsd/config.toml` and edit the `rootPath` to point to your desired root directory. You may also update any additional configs here as needed. The CLI also supports passing in configs via command line flags, but this is not recommended for production use, as they will not be saved between runs.\r\n\r\nFrom there, you can easily build the project via `./scripts/build` and then install via `./scripts/install`. This will create a systemd service unit file in `/etc/systemd/system/fsd.service` that you can then start the service with `sudo systemctl start fsd@user.service` where `user` is the user that you want to start `fsd` as.\r\n\r\n### Upgrading\r\nUpgrades are simple, you just get the new binary and move it to the same location as before, then restart the service with `sudo systemctl restart fsd@user.service`. Reproducibility is important, if you need to just blow away your prior state, including the database and config, re-creating everything should be as easy as starting the application. The guiding tenant is being self-contained.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjparr721%2Ffsd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjparr721%2Ffsd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjparr721%2Ffsd/lists"}