Chad
banner
chadtmiller.com
Chad
@chadtmiller.com
software engineer, atproto hacking

Building @grain.social and @slices.network

grain profile: https://grain.social/profile/chadtmiller.com
so much fun deploying html straight to a CDN and see it live instantly. easy to forget how simple the internet is sometimes when you're buried in build tools and deployment pipelines
December 16, 2025 at 12:07 AM
made this teal.fm plays feed in a few minutes with quickslice mcp via fmteal.slices.network

tools.slices.network/teal-plays
December 15, 2025 at 10:57 PM
just published the first slices tool! obviously it's gonna be statusphere but more soon. excited to tinker and build on a network of slices via quickslice in the Atmosphere (without React)!

tools.slices.network/statusphere

tangled.org/slices.netwo...
slices.network/tools
Tools for the Atmosphere
tangled.org
December 15, 2025 at 10:05 PM
the best part of quickslice imo is the integrated oauth proxy and the ability to register oauth clients. it frees you up to deploy your quickslice in one place and your frontend apps anywhere and not worry about the AT metadata.json. you can also have multiple sessions across multiple clients
December 15, 2025 at 8:09 PM
I feel like I'm seeing more design systems adopt web components now? Is that accurate? I wish there was a solid web component alternative to projects like base-ui.com or shadcn.
December 15, 2025 at 6:12 PM
Didn't realize the default quickslice railway template was broken 😭, but it should be fixed now if you trying it out. Also don't forget to redeploy after generating a public domain or the OAuth callback doesn't get registered properly.
byjp.me JP @byjp.me · 15h
Hey @chadtmiller.com — I just started playing with quickslice on Railway, and couldn't get it to boot until I swapped `DATABASE_URL` from being `/data/quickslice.db` to being `sqlite:/data/quickslice.db`. I think your default is missing the prefix!

Thanks for building this, it's super exciting!
December 15, 2025 at 4:12 PM
Just submitted a talk along the lines of "AT Protocol on BEAM" for the Vancouver Code Beam. Gotta spread the word!
December 15, 2025 at 6:40 AM
@j4ck.xyz basically recreated @grain.social in very little time with the quickslice mcp

#getsliced
the MCP is really powerful!! bsky.app/profile/j4ck...
i'm a big fan of grain.social, so i'm experimenting with more features of this client, including search (grain app doesn't have this!)

backend is just calling a quickslice i have running, and app built with gemini 3 pro / claude sonnet 4.5 + the MCP built in for context on how it works #atproto
December 14, 2025 at 9:39 PM
in case you missed it, @zzstoatzz.io's status.zzstoatzz.io now runs on a quickslice zzstoatzz-quickslice-status.fly.dev
status
status.zzstoatzz.io
December 14, 2025 at 6:45 PM
Tools is exactly what I’m trying to get at with @slices.network but for AT. I’m thinking about spinning up tools.slices.network that showcases one off mini apps built on different quickslices. Form to create a @grain.social gallery, teal fm feed, tangled search, etc.
December 14, 2025 at 5:44 PM
quickslice is like tap but instead you’re at the bar with At The Drive-In on full blast
December 14, 2025 at 5:30 PM
very awesome write up on quickslice, check it out!
December 14, 2025 at 1:40 AM
If want to play around with a @teal.fm GraphQL API, you can check out the quickslice instance here fmteal.slices.network. The dashboard for a quickslice instance shows a few simple stats about the AppView and the latest jetstream activity.
December 12, 2025 at 11:47 PM
Now that there's quickslice, the hosted slices.network experience in it's current form will go away soon. Probably going to turn it into more of a landing page for slices related resources/content but haven't figured all that out yet. Trying to reduce the number of things I need to maintain 😵‍💫
December 12, 2025 at 11:28 PM
If you give quickslice a try let me know how it goes. Documentation could be improved especially around setting the domain authority (ie social.grain), importing a lexicon set, and how primary vs external collections work. At some point you have to press the ship button and this is where it's at!
December 12, 2025 at 10:04 PM
My crazy idea to cram all of the AT Protocol into a single deployable container. Works with SQLite, Postgres and potentially more data stores in the future. Steps are literally deploy container -> import your lexicons -> backfill -> build your app with the GraphQL APIs.

quickslice.slices.network
quickslice - Introduction
quickslice.slices.network
December 12, 2025 at 9:40 PM
I've been playing around with this in an astro app and it's pretty nice! Relay has always had the best dx for @graphql.org and it's nice to be able to use the compiler without going all in. The graphql codegen scene for ts has been all over the place and this was desperately needed.
I've open-sourced one of our internal projects which lets you use the Relay Compiler for types/tooling without using Relay at runtime. It's effectively just a `fetch` wrapper.

github.com/puzzmo-com/b...
December 10, 2025 at 6:30 PM
Can confirm, I've been experimenting a lot with AT dev on BEAM using @gleam.run. I've been working on some lower level AT utilities like a jetstream consumer and a lexicon validation library, and also a total rewrite of @slices.network. Felt daunting a few months ago but making a lot of progress.
thinking about design patterns and data stores for indexing billions of AT records
Big Indexing
bnewbold.leaflet.pub
December 8, 2025 at 10:40 PM
got sidetracked and created this package for @gleam.run to render open graph images from lustre elements inspired by takumi/satori. uses a NIF via rustler to bind to takumi but if there is a better solution native to erlang, let me know!

github.com/bigmoves/og_...
December 8, 2025 at 10:08 PM
Working on an mcp integration with @slices.network so you can just ask the LLM questions about your AppView ie what lexicons it indexes, what queries are available, and even the ability to execute queries via GraphQL. I asked claude to give me a yearly wrapped of plays for @baileytownsend.dev
December 4, 2025 at 8:49 PM
@teal.fm noticing tracks submitted with multi-scrobbler include duration as null. The fm.teal.alpha.feed.play lexicon doesn't specify duration as nullable so technically validation should fail on these. Not sure if that data isn't available for the tack or an issue with multi-scrobbler.
December 4, 2025 at 8:07 PM
workshop idea submitted for #ATmostphereConf
December 4, 2025 at 5:51 PM
gleam tangled takeover happening now ⭐️ #atproto
December 4, 2025 at 1:22 AM
fun new #atproto app, congrats @danabra.mov for launching!
December 3, 2025 at 10:49 PM
it's almost 2026 and claude still thinks it's 2024
December 3, 2025 at 5:37 AM