{"id":22201643,"url":"https://github.com/ziodotsh/atfile","last_synced_at":"2025-04-06T00:07:30.798Z","repository":{"id":257892729,"uuid":"870012747","full_name":"ziodotsh/atfile","owner":"ziodotsh","description":"📦➔🦋 Store and retrieve files on the ATmosphere","archived":false,"fork":false,"pushed_at":"2025-03-19T13:21:52.000Z","size":294,"stargazers_count":118,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T23:11:48.026Z","etag":null,"topics":["atproto","bluesky","file-hosting"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"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/ziodotsh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-10-09T09:39:15.000Z","updated_at":"2025-03-29T15:18:31.000Z","dependencies_parsed_at":"2025-02-14T11:47:04.825Z","dependency_job_id":null,"html_url":"https://github.com/ziodotsh/atfile","commit_stats":null,"previous_names":["electricduck/atfile","ziodotsh/atfile"],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziodotsh%2Fatfile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziodotsh%2Fatfile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziodotsh%2Fatfile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ziodotsh%2Fatfile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ziodotsh","download_url":"https://codeload.github.com/ziodotsh/atfile/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415968,"owners_count":20935388,"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":["atproto","bluesky","file-hosting"],"created_at":"2024-12-02T16:09:42.930Z","updated_at":"2025-04-06T00:07:30.781Z","avatar_url":"https://github.com/ziodotsh.png","language":"Shell","funding_links":[],"categories":["Tools"],"sub_categories":["Bluesky"],"readme":"\u003ch1 align=\"center\"\u003e\n    ATFile\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    Store and retrieve files on the \u003ca href=\"https://atproto.com/\"\u003eATmosphere\u003c/a\u003e (like \u003ca href=\"https://bsky.app\"\u003eBluesky\u003c/a\u003e)\u003cbr /\u003e\n    \u003cem\u003eWritten entirely in Bash Shell. No \u003cspan title=\"Deno is pretty cool tho\"\u003eNodeJS\u003c/span\u003e here!\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cstrong\u003e\n        \u003ca href=\"https://github.com/ziodotsh/atfile/releases/latest\"\u003e⬇️ Get ATFile\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n        \u003ca href=\"https://tangled.sh/@zio.sh/atfile/issues/new\"\u003e💣 Submit Issue\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n        \u003ca href=\"https://bsky.app/profile/did:web:zio.sh\"\u003e 🦋 @zio.sh\u003c/a\u003e\n    \u003c/strong\u003e\n\u003c/p\u003e\n\n\u003chr /\u003e\n\n## ✨ Quick Start\n\n```sh\ncurl -sSL https://zio.sh/atfile/install.sh | bash\necho 'ATFILE_USERNAME=\"\u003cyour-atproto-username\u003e\"' \u003e ~/.config/atfile.env  # e.g. alice.bsky.social, did:plc:vdjlpwlhbnug4fnjodwr3vzh, did:web:twitter.com\necho 'ATFILE_PASSWORD=\"\u003cyour-atproto-password\u003e\"' \u003e\u003e ~/.config/atfile.env\natfile help\n```\n\n## 👀 Using\n\n### ✅ Requirements\n\n* **OS¹**\n    * 🟡 **Linux**: GNU, MinGW and Termux only; musl² not supported\n    * 🟢 **macOS**: Compatible with built-in version of Bash (3.2)\n    * 🟡 **Windows**: MinGW (Cygwin, Git Bash, MSYS2, etc.) and WSL (see Linux caveats above)\n        * This repository **does not** provide a native version for Windows\n    * 🟢 **BSD**: FreeBSD, NetBSD and OpenBSD; other non-detected BSDs should work (see ¹)\n    * 🟢 **Haiku**: [Yes, really](https://bsky.app/profile/did:plc:kv7sv4lynbv5s6gdhn5r5vcw/post/3lboqznyqgs26)\n    * 🔴 **Solaris**: \u003cspan title=\"Don't we all?\"\u003eHas issues\u003c/span\u003e; low priority\n* **Bash³:** 3.x or later\n* **Packages**\n    * [`curl`](https://curl.se)\n    * [ExifTool (`exiftool`)](https://exiftool.org) _(optional: set `ATFILE_SKIP_NI_EXIFTOOL=1` to ignore)_\n    * [`file`](https://www.darwinsys.com/file) _(only on *BSD, macOS, or Linux)_\n    * [GnuPG (`gpg`)](https://gnupg.org) _(optional: needed for `upload-crypt`, `fetch-crypt`)_\n    * [`jq`](https://jqlang.github.io/jq)\n    * [MediaInfo (`mediainfo`)](https://mediaarea.net/en/MediaInfo) _(optional: set `ATFILE_SKIP_NI_MEDIAINFO=1` to ignore)_\n    * `md5sum` _(optional: set `ATFILE_SKIP_NI_MD5SUM=1` to ignore)_\n        * Both GNU and BusyBox versions supported\n    * [`websocat`](https://github.com/vi/websocat) _(optional: needed for `stream`)_\n* **PDS:** [Bluesky PDS](https://github.com/bluesky-social/pds)\n    * Other PDSs (such as [millipds](https://github.com/DavidBuchanan314/millipds)) remain untested, but if they implement standard `com.atproto.*` endpoints, there should be no reason these won't work\n    * Filesize limits cannot be automatically detected. By default, this is 100MB\n        * To change this on Bluesky PDS, set `PDS_BLOB_UPLOAD_LIMIT=\u003cbytes\u003e`\n        * If the PDS is running behind Cloudflare, the Free plan imposes a 100MB upload limit\n        * This tool, nor setting a higher filesize limit, does not workaround [video upload limits on Bluesky](https://bsky.social/about/blog/09-11-2024-video). Videos are served via a [CDN](https://video.bsky.app), and adding larger videos to post records yields errors on the app\n* **ATProto account**\n    * `bsky.network` (`@*.bsky.social`) accounts supported\n      * If you can, limit the amount of files you upload to Bluesky's servers. It's a miracle this even works with, what's currently, an entirely free service.\n      * Heed the copyright warning: **do not upload copyrighted files.**\n    * `did:web` accounts supported!\n\n### 🤔 _(Todo)_\n\n_(Todo)_\n\n## 🏗️ Building\n\n_(Todo)_\n\n---\n\n## ⌨️ Contributing\n\nDevelopment mainly takes place on [Tangled](https://tangled.sh/@zio.sh/tangled), with [GitHub](https://github.com/ziodotsh/tangled) acting as a mirror. If possible, please use Tangled for your contributions: since it is powered by ATProto, you can log in using your Bluesky account.\n\nWhen submitting Pull Requests, **target the `dev` branch**: `main` is the current stable production version, and PRs will be rejected targeting this branch.\n\n## 🤝 Acknowledgements\n\n* **Paul Frazee** \u0026mdash; [🦋 @pfrazee.com](https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd)\u003cbr /\u003e\u003ca href=\"https://bsky.app/profile/did:plc:ragtjsm2j2vknwkz3zp4oxrd/post/3l63zzvthqj2o\"\u003eHis kind words\u003c/a\u003e\n* **Laurens Hof** \u0026mdash; [🦋 @laurenshof.online](https://bsky.app/profile/did:plc:mdjhvva6vlrswsj26cftjttd)\u003cbr /\u003eFeaturing ATFile on [The Fediverse Report](https://fediversereport.com): _[\"Last Week in the ATmosphere – Oct 2024 week 4\"](https://fediversereport.com/last-week-in-the-atmosphere-oct-2024-week-4/)_\n* **Samir** \u0026mdash; [🐙 @bdotsamir](https://github.com/bdotsamir)\u003cbr /\u003eTesting, and diagnosing problems with, support for macOS (`macos`)\n* **Astra** \u0026mdash; [🦋 @astra.blue](https://bsky.app/profile/did:plc:ejy6lkhb72rxvkk57tnrmpjl)\u003cbr /\u003e[Various PRs](https://github.com/ziodotsh/atfile/pulls?q=is%3Apr+author%3Aastravexton); testing, and diagnosing problems with, support for MinGW (`linux-mingw`) and Termux (`linux-termux`).\n* _(Forgot about you? [You know what to do](https://tangled.sh/@zio.sh/atfile/pulls/new))_\n\n---\n\n* **¹** You can bypass OS detection in one of two ways:\n    * Set `ATFILE_SKIP_UNSUPPORTED_OS=1`\u003cbr /\u003eBe careful! There's a reason some OSes are not supported\n    * Set `ATFILE_FORCE_OS=\u003cos\u003e`\u003cbr /\u003eThis overrides the OS detected. Possible values:\n       * BSD: `bsd-freebsd`, `bsd-netbsd`, `bsd-openbsd`\n       * Linux: `linux`, `linux-mingw`, `linux-musl`, `linux-termux`\n       * Other: `haiku`, `macos`, `solaris`\n* **²** musl-powered distros do not use GNU/glibc packages, and have problems currently\n    * Known musl distros: Alpine, Chimera, Dragora, Gentoo (musl), Morpheus, OpenWrt, postmarketOS, Sabotage, Void\n    * Bypassing OS detection (see ¹) will work, but dates will not be handled correctly\n* **³** As long as you have Bash installed, running from another shell will not be problematic ([`#!/usr/bin/env bash`](https://tangled.sh/@zio.sh/atfile/blob/main/atfile-install.sh#L1) forces Bash)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fziodotsh%2Fatfile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fziodotsh%2Fatfile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fziodotsh%2Fatfile/lists"}