{"id":13558081,"url":"https://github.com/ananace/ruby-matrix-fs","last_synced_at":"2025-04-23T03:03:53.037Z","repository":{"id":143078736,"uuid":"295012717","full_name":"ananace/ruby-matrix-fs","owner":"ananace","description":"A FUSE filesystem for using a Matrix room as a distributed filesystem","archived":false,"fork":false,"pushed_at":"2021-02-01T23:52:16.000Z","size":56,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T21:31:44.222Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/ananace.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-09-12T19:32:01.000Z","updated_at":"2022-01-18T07:58:31.000Z","dependencies_parsed_at":"2023-04-18T08:47:23.078Z","dependency_job_id":null,"html_url":"https://github.com/ananace/ruby-matrix-fs","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananace%2Fruby-matrix-fs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananace%2Fruby-matrix-fs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananace%2Fruby-matrix-fs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananace%2Fruby-matrix-fs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ananace","download_url":"https://codeload.github.com/ananace/ruby-matrix-fs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250360480,"owners_count":21417720,"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":[],"created_at":"2024-08-01T12:04:44.135Z","updated_at":"2025-04-23T03:03:53.015Z","avatar_url":"https://github.com/ananace.png","language":"Ruby","funding_links":[],"categories":["Ruby","others"],"sub_categories":[],"readme":"# MatrixFS\n\nA small FUSE filesystem that stores data as Matrix state objects, giving you a relatively low-cost distributed filesystem - albeit much slower than any proper filesystem.\n\n## Usage\n\n```\n$ bin/mount.matrixfs -h\nUsage:\n     mount.matrixfs !roomid:example.com mountpoint [-h] [-d] [-o [opt,optkey=value,...]]\nFuse options: (2.9)\n    -h                     help - print this help output\n    -d |-o debug           enable internal FUSE debug output\n\nfuse: failed to access mountpoint -h: No such file or directory\nFilesystem options:\n    -o v                             Enables logging of MatrixFS actions\n    -o vv                            Enables verbose logging of MatrixFS actions\n    -o debug                         Enables logging of MatrixSDK communication\n    -o no_listen                     Don't listen to changes\n    -o hs=https://matrix.example.com The homeserver URL to communicate with\n    -o hs_domain=example.com         The homeserver domain to communicate with\n    -o access_token=TOKEN            An access token to use, to skip needing to log in\n    -o tokenfile=/PATH/TO/TOKEN      An access token to use, to skip needing to log in\n    -o user=USERNAME                 The username to log in with\n    -o pass=PASSWORD                 The password to log in with\n    -o passfile=/PATH/TO/PASS        The file to read the password from\n    -o gc=SECONDS                    Duration to keep file data in memory since last access (default 3600 / 1 hour, use -1 to disable)\n```\n\n### Limitations\n\nDue to how Matrix stores state (in 64kB JSON objects) larger files and data that can't be UTF-8 encoded will be fragmented and stored as base64 strings, which will cause a larger memory footprint when accessing them.\n\nThere's only limited handling of umasks; the three octets will always be identical, read will always be set, write will be set depending on the power levels of the mounting user, execute can only be set through a separate Matrix client.\n\n## TODO?\n\n- Sync existence and content separately?\n- Handle multiple rooms\n- Access arbitrary state?\n- Support chmod for setting execute bit\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/ananace/ruby-matrix-fs\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananace%2Fruby-matrix-fs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fananace%2Fruby-matrix-fs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananace%2Fruby-matrix-fs/lists"}