diff options
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 94 |
1 files changed, 91 insertions, 3 deletions
@@ -5,10 +5,98 @@ </a> </div> -`adenosine`: hobby implementation of atproto.com in Rust -======================================================== +`adenosine`: enthusiast-grade implementation of atproto.com in Rust +=================================================================== -It doesn't work yet. +**Status:** it doesn't even work yet and will eat your data + +This is a hobby project to implement components of the proposed Bluesky AT +Protocol ([atproto.com](https://atproto.com)) for federated social media, as +initially announced in Fall 2022. This might be interesting for other folks to +take a spin with, but isn't intended to host real content from real people. The +goal is to think through how the protocol might work by implementing it. + + +## Quickstart (CLI) + +To work with an actual PDS server, you will need to get the +[`bluesky-social/atproto`](https://github.com/bluesky-social/atproto) prototype +PDS up and running locally. There is a separate +[quickstart](./notes/atproto_quickstart.md) on how to get that going. + +If you run a Debian-base Linux distribution, you might be able to install an +existing package (TODO: link). Otherwise, you'll need to build the CLI tool +from source. Install a recent version of the Rust programming language +toolchain (eg, using [`rustup`](https://rustup.rs/) + +The top level workplace includes the GUI and PDS code, which include huge +dependency trees and are very slow to build. If you just want the CLI, enter +the `adenosine-cli` directory before running any `cargo` commands. + +To build, test, and locally install just the CLI (using `cargo`): + + cd adenosine-cli + cargo install + +To start interacting with a PDS, set the `ATP_HOST` environment variable. Then +either register a test account, or create a new session for an existing +account, and save the JWT token to the `ATP_AUTH_TOKEN`: + + # default port for bluesky-social/atproto implementation + export ATP_HOST=http://localhost:2583 + + # register a new account + adenosine account register -u voltaire.test -p bogus -e voltaire@example.com + { + "did": "did:plc:yqtuksvatmmgngd5nkkw75hn", + "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE", + "username": "voltaire.test" + } + + export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjMwNn0.MMQa4JIQdwvhy-rjJ0kO-z8-KdoOL0Lto9JtOkK-lwE + + # to clear the auth token env variable + unset ATP_AUTH_TOKEN + + # create a new session (login) for existing account + adenosine account login -u voltaire.test -p bogus + { + "did": "did:plc:yqtuksvatmmgngd5nkkw75hn", + "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY", + "name": "voltaire.test" + } + + export ATP_AUTH_TOKEN=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6cGxjOnlxdHVrc3ZhdG1tZ25nZDVua2t3NzVobiIsImlhdCI6MTY2Njk5NjQxNX0.j2wcF1g9NxT_1AvYRiplNf_jtK6S81y3L38AkcBwOqY + +You could save the `ATP_HOST` and `ATP_AUTH_TOKEN` values in `~/.bashrc` so you +don't need to enter them every time. + +Now you can start posting and poking around: + + adenosine bsky post "gruel again for breakfast" + { + "cid": "bafyreig2aqlsg4arslck64wbo2hnhe6k2a4z3z2sjfzh3uapv3a4zjld7e", + "uri": "at://did:plc:yqtuksvatmmgngd5nkkw75hn/app.bsky.post/3jg5zkr322c2a" + } + + + adenosine ls at://voltaire.test + app.bsky.post + +There is a [manpage](./extra/adenosine.1.md) and [CLI-specific +README](./adenosine-cli/README.md) with more details and examples. + + +## Development Mininum Supported Rust Version (MSRV) is currently 1.61, using 2021 Rust Edition. + +Contributions, conversations, bug reports, and handwriten postcards are all +welcome. As mentioned above this is a low-effort hobby project so high-touch +support, feature requests, growth strategies, etc, probably will not be +fielded. + +The source code license is AGPLv3. Please acknowledge this in any initial +contributions, and also indicate whether and how you would like to be +acknowledged as a contributor (eg, a name and optionally a URL). |