{"id":48373578,"url":"https://github.com/ykhdr/hubfuse","last_synced_at":"2026-04-05T17:42:46.982Z","repository":{"id":348734666,"uuid":"1188577311","full_name":"ykhdr/hubfuse","owner":"ykhdr","description":"Network file sharing for local networks. Mount remote directories transparently via SSHFS, coordinated by a central hub server","archived":false,"fork":false,"pushed_at":"2026-04-04T14:02:22.000Z","size":224,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-05T17:42:42.266Z","etag":null,"topics":["directory","mount","network","sshfs"],"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/ykhdr.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-22T09:30:19.000Z","updated_at":"2026-04-05T15:22:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ykhdr/hubfuse","commit_stats":null,"previous_names":["ykhdr/hubfuse"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ykhdr/hubfuse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ykhdr%2Fhubfuse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ykhdr%2Fhubfuse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ykhdr%2Fhubfuse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ykhdr%2Fhubfuse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ykhdr","download_url":"https://codeload.github.com/ykhdr/hubfuse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ykhdr%2Fhubfuse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31444702,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T15:22:31.103Z","status":"ssl_error","status_checked_at":"2026-04-05T15:22:00.205Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["directory","mount","network","sshfs"],"created_at":"2026-04-05T17:42:46.557Z","updated_at":"2026-04-05T17:42:46.977Z","avatar_url":"https://github.com/ykhdr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HubFuse\n\nNetwork file sharing for local networks. Mount remote directories transparently via SSHFS, coordinated by a central hub server.\n\n## How it works\n\nHubFuse uses a hub-and-spoke architecture:\n\n- **Hub** (`hubfuse-hub`) — a central gRPC server that tracks devices, manages pairing, and broadcasts events.\n- **Agent** (`hubfuse`) — a daemon on each device that connects to the hub, exports local directories via an embedded SSH server, and mounts remote shares via SSHFS.\n\nAll communication is secured with mTLS. Devices pair using short-lived invite codes to exchange SSH public keys.\n\n## Requirements\n\n- Go 1.25+\n- `protoc` with `protoc-gen-go` and `protoc-gen-go-grpc` (for proto regeneration only)\n- `sshfs` installed on agent machines\n\n## Quick start\n\n```bash\n# Build\nmake build\n\n# Install binaries to $GOPATH/bin\nmake install\n\n# Start the hub (default :9090)\nhubfuse-hub start\n\n# On each device — join the hub and start the agent\nhubfuse join --hub \u003chub-address\u003e:9090\nhubfuse start\n```\n\n## Configuration\n\nAgent configuration lives in `~/.hubfuse/config.kdl` (KDL format). Example:\n\n```kdl\nnickname \"my-laptop\"\nhub \"192.168.1.10:9090\"\nssh-port 2222\n\nshares {\n    projects \"/home/user/projects\" permissions=\"rw\" allowed=\"all\"\n}\n\nmounts {\n    docs \"work-pc\" \"docs\" \"/mnt/hubfuse/docs\"\n}\n```\n\nChanges to `config.kdl` are hot-reloaded — no restart needed.\n\n## Development\n\n```bash\nmake build              # compile all packages\nmake test               # run unit + integration tests\nmake test-unit          # unit tests only\nmake test-integration   # integration tests (120s timeout)\nmake vet                # static analysis\nmake proto-gen          # regenerate gRPC code from proto/hubfuse.proto\n```\n\n## Project structure\n\n```\ncmd/\n  hubfuse-hub/          # hub CLI entry point\n  hubfuse/              # agent CLI entry point\nproto/\n  hubfuse.proto         # gRPC service definition\ninternal/\n  hub/                  # hub server: registry, heartbeat, pairing, gRPC handlers\n    store/              # Store interface + SQLite implementation\n  agent/                # agent daemon: connector, mounter, SSH server, config\n    config/             # KDL config parser, diff detection, hot-reload\n  common/               # TLS helpers, logging, shared types\ntests/\n  integration/          # end-to-end gRPC tests with in-process hub\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fykhdr%2Fhubfuse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fykhdr%2Fhubfuse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fykhdr%2Fhubfuse/lists"}