{"id":20642414,"url":"https://github.com/ipld/frisbii","last_synced_at":"2026-02-09T14:10:40.469Z","repository":{"id":175975781,"uuid":"654520141","full_name":"ipld/frisbii","owner":"ipld","description":"An experimental minimal IPLD data provider for the IPFS network","archived":false,"fork":false,"pushed_at":"2025-10-06T03:00:37.000Z","size":678,"stargazers_count":19,"open_issues_count":2,"forks_count":4,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-06T05:26:08.054Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ipld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":"2023-06-16T10:00:47.000Z","updated_at":"2025-09-25T06:22:03.000Z","dependencies_parsed_at":"2023-10-12T08:25:55.431Z","dependency_job_id":"9eb2ae8d-e0ac-4276-8b35-4f4c14fe30fb","html_url":"https://github.com/ipld/frisbii","commit_stats":null,"previous_names":["ipld/frisbii","ipld/go-frisbii"],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/ipld/frisbii","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipld%2Ffrisbii","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipld%2Ffrisbii/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipld%2Ffrisbii/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipld%2Ffrisbii/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ipld","download_url":"https://codeload.github.com/ipld/frisbii/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ipld%2Ffrisbii/sbom","scorecard":{"id":435190,"data":{"date":"2025-08-11","repo":{"name":"github.com/ipld/frisbii","commit":"ee74d874d4ad370717b4b0c20e21c5e82243f888"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":2,"reason":"Found 2/8 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/generated-pr.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/generated-pr.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go-check.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/go-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go-test.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/go-test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-binaries.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/release-binaries.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-binaries.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/release-binaries.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-binaries.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/release-binaries.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-check.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/release-check.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/releaser.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/releaser.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/stale.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/stale.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tagpush.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/ipld/frisbii/tagpush.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   8 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/go-check.yml:10","Info: topLevel 'contents' permission set to 'read': .github/workflows/go-test.yml:10","Warn: no topLevel permission defined: .github/workflows/release-binaries.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-check.yml:10","Warn: topLevel 'contents' permission set to 'write': .github/workflows/releaser.yml:9","Info: topLevel 'contents' permission set to 'read': .github/workflows/tagpush.yml:9","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release-binaries.yml:10"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.6.2 not signed: https://api.github.com/repos/ipld/frisbii/releases/193432135","Warn: release artifact v0.6.1 not signed: https://api.github.com/repos/ipld/frisbii/releases/171858033","Warn: release artifact v0.6.2 does not have provenance: https://api.github.com/repos/ipld/frisbii/releases/193432135","Warn: release artifact v0.6.1 does not have provenance: https://api.github.com/repos/ipld/frisbii/releases/171858033"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 28 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3748 / GHSA-f26w-gh5m-qq77"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T04:27:17.707Z","repository_id":175975781,"created_at":"2025-08-19T04:27:17.708Z","updated_at":"2025-08-19T04:27:17.708Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278575848,"owners_count":26009444,"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-06T02:00:05.630Z","response_time":65,"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-11-16T16:09:04.673Z","updated_at":"2025-10-08T08:41:49.931Z","avatar_url":"https://github.com/ipld.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Frisbii\n\n**An experimental minimal IPLD data provider for the IPFS network**\n\n**Frisbii** is currently a simple HTTP server that conforms minimally to the [IPFS Trustless Gateway](https://specs.ipfs.tech/http-gateways/trustless-gateway/) specification, serving IPLD data in CAR format to HTTP clients.\n\nContent routing, when enabled, is delegated to the [Interpletary Network Indexer (IPNI)](https://cid.contact/) service. On startup, Frisbii can announce its content to IPNI, allowing it to be discovered by clients that query the indexer for that content.\n\nFrisbii does not directly interact with the IPFS DHT, which limits discovery potential for clients which primarily use the DHT. However, with increasing reliance on IPNI for content discovery, this will change over time. In particular, **[Lassie](https://github.com/filecoin-project/lassie)**, a universal IPFS and Filecoin retrieval client, relies on IPNI for content discovery.\n\n## Installation\n\nTo install the latest version of Frisbii, run:\n\n```\ngo install github.com/ipld/frisbii/cmd/frisbii@latest\n```\n\nAlternatively, binaries are available for download on the [releases page](https://github.com/ipld/frisbii/releases).\n\n## Usage\n\n```\nfrisbii --announce=roots --car=/path/to/file.car\n```\n\nNote that for announcements to be successful, Frisbii must be able to determine its public address. You may need to supply a `--listen` argument with a public address, or use `--public-addr` to override the address that Frisbii determines for itself.\n\nFull argument list:\n\n* `--car` - path to one or more CAR files to serve, this can be a plain path, a glob path to match multiple files, and `--car` can be supplied multiple times.\n* `--announce` - announce the given roots to IPNI on startup. Can be `roots` or `none`. Defaults to `none`.\n* `--listen` - hostname and port to listen on. Defaults to `:3747`.\n* `--public-addr` - multiaddr or URL of this server as seen by the indexer and other peers if it is different to the listen address. Defaults address of the server once started (typically the value of `--listen`).\n* `--log-file` - path to file to append HTTP request and error logs to. See [Log format](#log-format) for details of the log format. Defaults to `stdout`.\n* `--max-response-duration` - maximum duration to spend responding to a request. Defaults to `5m`.\n* `--max-response-bytes` - maximum size of a response from IPNI. Defaults to `100MiB`.\n* `--compression-level` - compression level to use for HTTP response data where the client accepts it. `0`-`9`, `0` is no compression, `9` is maximum compression. Defaults to `0` (none).\n* `--verbose` - enable verbose logging. Defaults to `false`. Same as using `GOLOG_LOG_LEVEL=debug` as an environment variable. `GOLOG_LOG_LEVEL` can be used for more fine-grained control of log output.\n* `--help` - show help.\n\n### CAR files\n\n* [go-car](https://github.com/ipld/go-car) can be used to author, manipulate and inspect CAR files.\n* [Kubo](https://github.com/ipfs/kubo)'s `dag export` command can be used to export a CAR file from an IPFS node, although this is limited to complete DAGs.\n* [Lassie](https://github.com/filecoin-project/lassie) can be used to export a CAR file from the network.\n\nBoth CARv1 and CARv2 formats are usable by Frisbii. However, on startup, Frisbii will need to generate an index in memory for a CARv1. So for faster start-up times it is recommended that you start Frisbii with CARv2 files (using go-car this can be done with `car index input.car \u003e output.car`).\n\nUsing `--anounce=roots` will announce the roots of all CARs loaded by Frisbii to the indexer. Other blocks are not announced, and will not be discoverable by clients that query the indexer for that content, however they are served by Frisbii when requested directly or as part of a DAG whose root has been advertised.\n\n## Library usage\n\nSee https://pkg.go.dev/github.com/ipld/frisbii for full documentation.\n\n`NewFrisbiiServer()` can be used to create a new server given a `LinkSystem` as a source of IPLD data.\n\n## Log format\n\nFrisbii logs HTTP requests and errors to a log file that is roughly equivalent to a standard nginx or Apache log format; that is, a space-separated list of elements, where the elements that may contain spaces are quoted. The format of each line can be specified as:\n\n```\n%s %s %s \"%s\" %d %d %d %s \"%s\" \"%s\"\n```\n\nWhere the elements are:\n\n1. RFC 3339 timestamp\n2. Remote address\n3. Method\n4. Path\n5. Response status code\n6. Response duration (in milliseconds)\n7. Response size\n8. Compression ratio (or `-` if no compression)\n9. User agent\n10. Error (or `\"\"` if no error)\n\n## Further Development\n\nThe goal of Frisbii is to be maximally minimal according to user need. It is not intended to be a full IPFS node, but rather a simple server that can be used to serve IPLD data. However, the limitations of HTTP as the only transport, the restrictions within the current minimal Trustless Gateway implementation, and reliance on IPNI for content announcement present some challenges for data provision to a wide audience.\n\nSome areas for possible further development (perhaps by you!) include:\n\n* Support for additional transports, including Graphsync over a minimal DataTransfer implementation to mirror the default transport functionality of Filecoin storage providers, and Bitswap for the widest possible compatibility with existing IPFS clients. Unfortunately both transports introduce considerable complexity.\n* Support for P2P message sending for IPNI, so announcements can be made to multiple indexers via pubsub.\n* DHT support.\n* Support for alternative data storage backends.\n* More advanced announcement options, including `all` CIDs, or a user-supplied list of CIDs.\n\n## License\n\nApache-2.0/MIT © Protocol Labs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipld%2Ffrisbii","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fipld%2Ffrisbii","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fipld%2Ffrisbii/lists"}