comet.sh's Avatar

comet.sh

@comet.sh

Music streaming on ATProto. GitHub: https://github.com/cometsh Tangled: https://tangled.sh/@comet.sh Chat on Discord: https://discord.gg/ZKK7DnubD9 from @ovyerus.com

196
Followers
8
Following
7
Posts
17.05.2025
Joined
Posts Following

Latest posts by comet.sh @comet.sh

A very basic, unstyled, audio upload form with a file input, title text field, description text area, and an explicit content toggle. There is text below it stating the success of the upload, with some information about the uploaded results as AT Protocol blobs and records.

A very basic, unstyled, audio upload form with a file input, title text field, description text area, and an explicit content toggle. There is text below it stating the success of the upload, with some information about the uploaded results as AT Protocol blobs and records.

yippee

26.02.2026 13:34 πŸ‘ 14 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1
Preview
comet.sh/drinkup Elixir ATProtocol firehose & subscription listener

finally released a new version of Drinkup, bringing breaking changes for how to use it, but also new support for Tap and Jetstream!

tangled.org/comet.sh/dri...
#elixir #atproto

06.02.2026 12:03 πŸ‘ 15 πŸ” 6 πŸ’¬ 0 πŸ“Œ 0
Elixir code screenshot:

Atex.OAuth.Permission.repo(["app.bsky.feed.post", "fm.teal.alpha.feed.play"], create: true)
# => "repo?collection=app.bsky.feed.post&collection=fm.teal.alpha.feed.play&action=create"

Atex.OAuth.Permission.rpc("app.bsky.graph.getBlocks", aud: "*")
# => "rpc:app.bsky.graph.getBlocks?aud=*"

# Requires a session from `Atex.OAuth.Plug` or manually acquired and set through
# `Atex.OAuth.SessionStore`
{:ok, client} = %Atex.XRPC.OAuthClient{did: "did:web:comet.sh"}
{:ok, response, _} = Atex.XRPC.get(client, %Com.Atproto.Repo.CreateRecord{...})

Elixir code screenshot: Atex.OAuth.Permission.repo(["app.bsky.feed.post", "fm.teal.alpha.feed.play"], create: true) # => "repo?collection=app.bsky.feed.post&collection=fm.teal.alpha.feed.play&action=create" Atex.OAuth.Permission.rpc("app.bsky.graph.getBlocks", aud: "*") # => "rpc:app.bsky.graph.getBlocks?aud=*" # Requires a session from `Atex.OAuth.Plug` or manually acquired and set through # `Atex.OAuth.SessionStore` {:ok, client} = %Atex.XRPC.OAuthClient{did: "did:web:comet.sh"} {:ok, response, _} = Atex.XRPC.get(client, %Com.Atproto.Repo.CreateRecord{...})

atex v0.7.0 is out and it's a doozy!

- Much easier to use OAuth client.
- Utilities for helping create new permission scopes.
- Identity cache has a TTL now.
- Cache for OAuth server info
- OAuth Plug is actually usable, with a new `:callback` parameter!

tangled.org/comet.sh/atex
#elixir #atproto

06.01.2026 23:27 πŸ‘ 19 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

hello all! if you’ve been tracking your plays, we made you a year-end thing.

we’re not data scientists, but we tried crunching your numbers anyway. your top tracks, listening patterns, and all the stats you (probably?) didn’t know you wanted.

happy new year from all of us!

yearinmusic.teal.fm

31.12.2025 08:52 πŸ‘ 87 πŸ” 18 πŸ’¬ 16 πŸ“Œ 22

Statusphere Elixir has been published! it serves as a proper example for atex and Drinkup, and also has taught me a bunch I need to change in those libraries to make the developer experience nicer, before diving into Comet proper.

tangled.org/comet.sh/sta...
#elixir #atproto

20.12.2025 02:37 πŸ‘ 24 πŸ” 4 πŸ’¬ 1 πŸ“Œ 0
macOS screenshot of two side-by-side windows. The left window is a VS Code window with a "statusphere_elixir" project opened, showing some database code and a terminal with some debug logs. The right window is a web browser page of the project. It has a title saying "Statusphere Elixir" with a header welcoming the user (me) and asking for their status. Below that is a grid of buttons containing various emoji and a timeline showing a few status events from the logged in user.

macOS screenshot of two side-by-side windows. The left window is a VS Code window with a "statusphere_elixir" project opened, showing some database code and a terminal with some debug logs. The right window is a web browser page of the project. It has a title saying "Statusphere Elixir" with a header welcoming the user (me) and asking for their status. Below that is a grid of buttons containing various emoji and a timeline showing a few status events from the logged in user.

πŸ‘€

#elixir #atproto

19.12.2025 13:35 πŸ‘ 17 πŸ” 3 πŸ’¬ 0 πŸ“Œ 1

i should find a designer for Comet's branding, and probably UI

01.12.2025 07:01 πŸ‘ 7 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

actually i don't think i need to touch anything more on the atex side just yet. Might finally get a start on properly working on Comet!

26.11.2025 13:22 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
An image showing the same text inside of the post. comet.sh/atex
⭐️ 13

An image showing the same text inside of the post. comet.sh/atex ⭐️ 13

comet.sh/atex
⭐️ 13

30.10.2025 23:10 πŸ‘ 16 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

considering it...

17.10.2025 00:30 πŸ‘ 5 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
@comet.sh/atex A set of utilities for working with the AT Protocol in Elixir.

v0.5.0 of atex is out now!
some breaking changes with `Atex.XRPC.Client` being renamed to `Atex.XRPC.LoginClient` and `Atex.HTTP` has been ditched, and now we have OAuth support and a new `Atex.XRPC.OAuthClient` for acting as an authenticated user!

tangled.org/@comet.sh/at...

#elixir #atproto

11.10.2025 07:11 πŸ‘ 12 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0

I'm building an alternative streaming option for artists called tracklist:// where they will be able to self-host their music catalog and stream it directly to fans.

As musicians ourselves, our goal is to empower artists with connection.

Sign up for our waitlist here; www.tracklist.diy

28.09.2025 14:09 πŸ‘ 125 πŸ” 32 πŸ’¬ 10 πŸ“Œ 2
Preview
feat: basic OAuth Plug and utils Β· cometsh/atex@1164a1e

ok well in the meantime while i'm trying to figure out hooking up atex's oauth stuff to a HTTP client, i have finally pushed the Plug for implementing the flow! github.com/cometsh/atex...

04.10.2025 05:24 πŸ‘ 7 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
@comet.sh/atex A set of utilities for working with the AT Protocol in Elixir.

v0.4.0 of atex is now released! bringing along the `deflexicon` macro to get runtime validation schemas and typespecs from a lexicon definition, and `mix atex.lexicons` to generate modules with `deflexicon` from a directory of lexicons!

#elixir #atproto

27.08.2025 10:59 πŸ‘ 8 πŸ” 3 πŸ’¬ 0 πŸ“Œ 0
Preview
anisota for Bluesky & ATProto a new, experimental way to experience social media

Welcome.
Anisota is here.
Step inside.

πŸ•―οΈ anisota.net πŸ•―οΈ

20.08.2025 02:05 πŸ‘ 295 πŸ” 81 πŸ’¬ 46 πŸ“Œ 45
Screenshot of the comet.sh landing page, showing off the roadmap.

Screenshot of the comet.sh landing page, showing off the roadmap.

We now have a public roadmap available on the website! This is subject to change as we get through the goals, but it'll give you an idea of what we're hoping to achieve.

comet.sh

15.08.2025 02:40 πŸ‘ 68 πŸ” 18 πŸ’¬ 3 πŸ“Œ 1
Screenshot of Elixir code, showing an AT Protocol lexicon definition in a `deflexicon` macro.

Screenshot of Elixir code, showing an AT Protocol lexicon definition in a `deflexicon` macro.

Screenshot of Elixir REPL, demonstrating the generated validation functions from the code in the previous image.

Screenshot of Elixir REPL, demonstrating the generated validation functions from the code in the previous image.

almost done with my lexicon to runtime-validation schema stuff for atex! just need to handle subscriptions, queries, and procedures - all of which should come along faster since the bulk of it is done - and then a command for codegen and it's good to go!

12.08.2025 11:13 πŸ‘ 8 πŸ” 1 πŸ’¬ 0 πŸ“Œ 1

Comet's code (and related projects) are now available on @tangled.sh! Stuff will still be a bit GitHub-centric, but I'll do my best to keep them synced and responsive on both sides.

tangled.sh/@comet.sh

12.08.2025 02:42 πŸ‘ 14 πŸ” 7 πŸ’¬ 0 πŸ“Œ 0

DJ/"radio" streams in Comet, anyone? πŸ‘€

01.07.2025 23:00 πŸ‘ 8 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Player Component How to set up and use the Player component from @streamplace/components.

STREAMPLACE 0.7 is OUT NOW!!! Two huge features:

1. You can now stream directly from the Streamplace iOS/Android app! Grab the latest version from the App/Play store and try it out!

2. Our TypeScript SDK is live! Add livestreaming to your own #atproto apps!

stream.place/docs/compone...

01.07.2025 21:27 πŸ‘ 84 πŸ” 25 πŸ’¬ 2 πŸ“Œ 9

Still around! Got sick for about a week and it really took me out, but I'm better now and back on my shit!

26.06.2025 15:37 πŸ‘ 0 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Join the Comet Discord Server! Check out the Comet community on Discord – hang out with 1 other members and enjoy free voice and text chat.

We now have a Discord server for talking about development and music stuff! discord.gg/ZKK7DnubD9

01.06.2025 03:38 πŸ‘ 4 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - cometsh/drinkup: Elixir ATProtocol firehose & subscription listener Elixir ATProtocol firehose & subscription listener - cometsh/drinkup

Drinkup is now released! If you ever wanted an easy way to read from the ATProto firehose in Elixir.
github.com/cometsh/drin...

31.05.2025 14:41 πŸ‘ 2 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Preview
Ovyerus comet Rfcs Β· Discussions Explore the GitHub Discussions forum for Ovyerus comet in the Rfcs category.

Discussions/RFCs for some important topics for the future (copyright, moderation, social graph) are now open!
github.com/Ovyerus/come...

24.05.2025 14:57 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
atp.tools

owo what's this?
atp.tools/at:/did%3Apl...

22.05.2025 03:02 πŸ‘ 3 πŸ” 2 πŸ’¬ 0 πŸ“Œ 0
Preview
GitHub - Ovyerus/comet: Music on ATProto! Music on ATProto! Contribute to Ovyerus/comet development by creating an account on GitHub.

Now on GitHub! Very early days, current focus is on finishing up the lexicons, and then probably moving over to Rust because I don't want to write TS.

Contributions and suggestions are welcome!
github.com/Ovyerus/comet

20.05.2025 01:28 πŸ‘ 21 πŸ” 3 πŸ’¬ 2 πŸ“Œ 1