If This Then AT: Automation on Protocol

AtmosphereConf was an incredible experience. The people, talks, and energy were everything I hoped they’d be. The days since have been harder. Some difficult conversations and difficult decisions have come out of the conference, and I’m still processing a lot of it. I don’t want to dwell on that here; it doesn’t feel good. Instead, I want to look back at the work we did at Graze Social and share the parts that feel good. This is one of a series of posts doing that.

Last summer, Graze sponsored my travel to New York for the ATProtocol hack-day. Devin and I bounced ideas around and tinkered with different things, but at one point said, “wouldn’t it be cool if …” and that’s when the automation pipeline idea took off. We had a lot of great conversations and ideas that day, but this one really stuck.

IFTTA was absolutely one of those “yeah, why not” moments. Devin wanted to tie in Zapier for automation, so why not connect the two? I focused on the core pipeline and ATProtocol parts, while he worked on the Zapier side. Before we knew it, we had a working, feature-complete project ready to show.

How It Works

The automation engine focuses on blueprints that describe chains of nodes that either transform input or invoke an action. Each automation works as a series of steps: a trigger starts things off, data moves through several transforms, and an action happens at the end. Triggers can be firehose subscriptions, webhooks, or crontab schedules. Nodes process and reshape the data as it goes through. This includes making authenticated XRPC calls or connecting to external endpoints.

I had been trying out the datalogic-rs crate for JSONLogic conditionals, and adding it to the transform layer made sense. It let us set up complex filtering and routing without having to write custom code for each automation. You just describe what you want, and the engine checks it against the data as it moves through.

The result is a system where you can subscribe to firehose events, filter them with JSONLogic, reshape the data, and trigger authenticated actions on ATProtocol services or other platforms.

What It Became

IFTTA shows what’s possible when you see ATProtocol as a platform for automation, not just social networking. Making authenticated XRPC calls, subscribing to the firehose, using webhook and crontab triggers, and stacking transforms is a pattern I’ve used since then and plan to keep using.

ATProtocol’s event stream and authenticated API calls make a solid foundation for this kind of project. IFTTA proved it works, and the building blocks are there for anyone who wants to use them.

IFTTA is open source under the MIT license.

GitHub - graze-social/iftta: AT Protocol automation service written in Rust

AT Protocol automation service written in Rust. Contribute to graze-social/iftta development by creating an account on GitHub.