{"id":15707031,"url":"https://github.com/passcod/tomo","last_synced_at":"2025-10-07T09:52:49.319Z","repository":{"id":139959880,"uuid":"317526990","full_name":"passcod/tomo","owner":"passcod","description":"Experimental archive format with built-in indexing, compression, checksumming, signing, and incremental construction","archived":false,"fork":false,"pushed_at":"2020-12-06T13:22:24.000Z","size":39,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-17T05:02:52.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/passcod.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":"2020-12-01T11:59:26.000Z","updated_at":"2022-12-09T07:45:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"84e6cce7-88b6-457f-a9f3-85a197a5be28","html_url":"https://github.com/passcod/tomo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/passcod/tomo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passcod%2Ftomo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passcod%2Ftomo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passcod%2Ftomo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passcod%2Ftomo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/passcod","download_url":"https://codeload.github.com/passcod/tomo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passcod%2Ftomo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278755147,"owners_count":26040034,"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-10-07T02:00:06.786Z","response_time":59,"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":[],"created_at":"2024-10-03T20:32:54.613Z","updated_at":"2025-10-07T09:52:49.286Z","avatar_url":"https://github.com/passcod.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tomo\n\nYet another archive format.\n\n_This is experimental, potentially unstable, possibly unmaintained, absolutely\nnot fuzzed nor audited in any way, and may contain bad ideas. Proceed with\ncaution._\n\nTomo has some interesting properties:\n\n - It's always possible to `cat` two archives together to add one to the other.\n - It's always possible to write and often possible to read a single file or subset of files efficiently.\n - It's always possible to read and write archives that are larger than memory.\n - It's always possible to parallelise reading and writing archives.\n\nAnd some interesting features:\n\n - Archive paths are indexed (and extracting one file doesn't require reading\n   the N files before it).\n - Archive contents can be compressed on a per-file basis (you can also\n   compress multiple files together, see later).\n - The metadata can be compressed too.\n - Files can be deduplicated inside the archive, but the archive isn't a\n   content-addressed store, so it's not automatic (but that means hashing\n   collisions aren't necessarily a problem).\n - Both the archive and individual files support checksumming and signing as\n   part of the format.\n - Compression with a dictionary is supported natively.\n - You can nest archives, such that you can compress a subset of the files\n   together as a block, while still retaining indexing from the top level.\n - Each archive container defines its \"`cat`ting\" mode, so multi-container\n   (catted) archives can emulate overlay filesystems (like docker) or have one\n   container's contents have primacy over the rest, or go by modified date, or\n   other strategies.\n - Paths are stored in a platform-independent format, with components split up,\n   such that windows and unix paths syntax differences (mostly) don't matter.\n - Packing and unpacking are both done by reading the minimum required into\n   memory, and reading from or writing to disk (or whatever byte source) as\n   needed when needed, so memory requirements are kept low.\n - Both packing and unpacking are highly async processes, and can be\n   parallelised as much as possible (but do not _require_ parallelism).\n - Yes, even with compression.\n\nTomo is designed:\n\n - To be `cat`ted directly onto an executable, such that a runtime and\n   some application's source can be bundled together in one static file.\n - To support incremental construction.\n - To support being mounted as a read/write virtual filesystem.\n - To make use of multi-core and high-parallelism CPUs and I/O (SSDs).\n\nSome \"limitations\" (so far):\n\n - Container size is limited to 18 exabytes\n - Each container is limited to 16 million files\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasscod%2Ftomo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasscod%2Ftomo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasscod%2Ftomo/lists"}