{"id":14956318,"url":"https://github.com/storacha/w3up","last_synced_at":"2025-05-16T07:04:40.368Z","repository":{"id":39856668,"uuid":"485738909","full_name":"storacha/w3up","owner":"storacha","description":"⁂ w3up protocol implementation","archived":false,"fork":false,"pushed_at":"2025-05-01T14:23:19.000Z","size":9260,"stargazers_count":81,"open_issues_count":201,"forks_count":25,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-05-12T19:16:16.050Z","etag":null,"topics":["decentralized","filecoin","ipfs","storage","ucan","web3"],"latest_commit_sha":null,"homepage":"https://github.com/storacha/specs","language":"JavaScript","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/storacha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2022-04-26T10:30:58.000Z","updated_at":"2025-04-05T21:46:49.000Z","dependencies_parsed_at":"2023-10-15T19:58:52.077Z","dependency_job_id":"8a42d046-7137-43f2-beba-949afe5d88fa","html_url":"https://github.com/storacha/w3up","commit_stats":{"total_commits":1141,"total_committers":25,"mean_commits":45.64,"dds":0.7370727432077125,"last_synced_commit":"107a0994b4a643d0eb680729f7f20a292735e694"},"previous_names":["web3-storage/w3protocol","web3-storage/w3-protocol","w3s-project/w3up","web3-storage/w3up","storacha-network/w3up","storacha/w3up"],"tags_count":483,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/storacha%2Fw3up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/storacha%2Fw3up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/storacha%2Fw3up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/storacha%2Fw3up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/storacha","download_url":"https://codeload.github.com/storacha/w3up/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254287752,"owners_count":22045861,"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":["decentralized","filecoin","ipfs","storage","ucan","web3"],"created_at":"2024-09-24T13:12:45.701Z","updated_at":"2025-05-16T07:04:40.346Z","avatar_url":"https://github.com/storacha.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# ⚠️ DEPRECATED\n\nThis repo moved to [github.com/storacha/upload-service](https://github.com/storacha/upload-service). Please only use this repo to backport changes to `@web3-storage/*` modules.\n\n---\n\n# `w3up`\n\nThis repo implements the web3.storage UCAN protocol [specifications](https://github.com/storacha/specs).\n\nIt's the core of the web3.storage server and client implementations.\n\n## Usage\n\nStore your files with web3.storage and retrieve them via their unique Content ID. Our tools make it simple to hash your content locally, so you can verify the service only ever stores the exact bytes you asked us to. Pick the method of using web3.storage that works for you!\n\n### Website\n\nVisit https://console.web3.storage and upload right from the website. \n\nUnder the hood it uses the web3.storage client that we publish to npm to chunk and hash your files to calculate the root IPFS CID **in your browser** before sending them to https://up.web3.storage.\n\nOnce uploaded you can fetch your data from any IPFS gateway via [`https://w3s.link/ipfs/\u003croot cid\u003e`](https://w3s.link/ipfs/bafkreigh2akiscaildcqabsyg3dfr6chu3fgpregiymsck7e7aqa4s52zy)\n\n### Command Line\n\nInstall [`@web3-storage/w3cli`](https://github.com/storacha/w3cli#readme) globally, authorize it to act on your behalf, create a space and upload your files. It calculates the root CID for your files locally before sending them to web3.storage.\n\n**shell**\n```shell\n# verify your email to sync your existing ucan delegations to this agent.\n$ w3 login alice@example.com\n\n# create a Space, a DID namespace for your files... like a bucket.\n$ w3 space create Documents\n\n# lets go!\n$ w3 up ~/Pictures/ayy-lamo.jpg\n⁂ Stored 1 file\n⁂ https://w3s.link/ipfs/bafybeid6gpbsqkpfrsx6b6ywrt24je4xqe4eo4y2wldisl6sk7byny5uky\n```\n\nRun `w3 --help` or have a look at https://github.com/storacha/w3cli to find out everything it can do.\n\n### JS Client\n\nAdd the [`@web3-storage/w3up-client`](https://www.npmjs.com/package/@web3-storage/w3up-client) module into your project with `npm i @web3-storage/w3up-client` and upload a single file with [`client.uploadFile`](https://github.com/storacha/w3up/blob/main/packages/w3up-client/README.md#uploadfile) or many with [`client.uploadDirectory`](https://github.com/storacha/w3up/blob/main/packages/w3up-client/README.md#uploaddirectory).\n\nIf you've already got a space you can upload like this:\n \n**node.js**\n```js\nimport { filesFromPaths } from 'files-from-path'\nimport * as Client from '@web3-storage/w3up-client'\n\nconst [,,yourEmail, pathToAdd] = process.argv\n\n// authorize your local agent to act on your behalf\nconst client = await Client.create()\nawait client.login(yourEmail)\n\n// lets go!\nconst files = await filesFromPaths(pathToAdd)\nconst cid = await client.uploadDirectory(files)\n\nconsole.log(`IPFS CID: ${cid}`)\nconsole.log(`Gateway URL: https://w3s.link/ipfs/${cid}`)\n```\n\nSee https://web3.storage/docs/w3up-client for a guide to using the js client for the first time.\n\nFor an interactive command line adventure into the using w3up check out `learnyouw3up` here https://github.com/storacha/learnyouw3up\n\n### GitHub Action \n\nThe Action [`add-to-web3`](https://github.com/marketplace/actions/add-to-web3) wraps [`w3cli`](https://github.com/storacha/w3cli) to let you add files to web3.storage from your GitHub Workflows.\n\n**github-workflow.yaml**\n```yaml\n- run: npm run build # e.g output your static site to `./dist`\n\n- uses: web3-storage/add-to-web3@v3.0.0\n  id: w3up\n  with:\n    path_to_add: 'dist'\n    secret_key: ${{ secrets.W3_PRINCIPAL }}\n    proof: ${{ secrets.W3_PROOF }}\n\n- run: echo ${{ steps.w3up.outputs.cid }}\n# \"bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am\"\n- run: echo ${{ steps.w3up.outputs.url }}\n# \"https://dweb.link/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am\"\n```\n\nTo generate a `secret_key` and delegate permissions to it as a `proof` to use in CI see: https://github.com/storacha/add-to-web3#generating-a-secret_key-and-proof\n\n## Contributing\n\nAll welcome! web3.storage is open-source. See the [contributing guide](./CONTRIBUTING.md)\n\nThis project uses node v18 and `pnpm`. It's a monorepo that uses [pnpm workspaces](https://pnpm.io/workspaces) to handle resolving dependencies between the local [`packages`](https://github.com/storacha/w3up/tree/main/packages)\n\n## License\n\nDual-licensed under [MIT + Apache 2.0](license.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoracha%2Fw3up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstoracha%2Fw3up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstoracha%2Fw3up/lists"}