At @habitat.network, we're working hard to launch something at ATmosphereConf. We're building a platform for user data agency: giving users full and transparent control of where their data flows on the internet. Naturally, building a privacy-first platform, we're thinking about permissioned data.
Ewan's personal package monorepo — language-agnostic workspace with TypeScript, Rust, and Python packages.
Ewan's personal package monorepo — the canonical home for @ewanc26/tid, @ewanc26/atproto, @ewanc26/ui, and @ewanc26/utils.
AT Protocol service layer extracted from ewancroft.uk — profile fetching, Standard.site documents, Bluesky posts, music/mood status, Tangled repos, and a built-in in-memory cache.
My last blog post was about how I use train journeys to exit my routine and to allow myself a somewhat constrained medium to focus on work while still having some clarity, freedom and a new place to change mindsets in between working sessions. It was also my first foray into both blogging and leaflet, and it was an early view into the rabbit hole of the 'atmosphere' I started looking into. I mentioned previously the post from titled "A Social Filesystem", which helped me better understand the wa...
Zero-dependency, spec-compliant AT Protocol TID generation for Node.js and browsers.
Import your Last.fm and Spotify listening history to the AT Protocol network using the fm.teal.alpha.feed.play lexicon.
ATProto blogging from Obsidian! Introducing the obsidian-standard-site plugin.
Classic Snake with AT Protocol OAuth login and high score saving to your PDS.
An alternate SvelteKit frontend for Linkat showing a curated directory of AT Protocol user profiles. Unmaintained.
Automatically update your Bluesky avatar (and banner) every hour based on the time of day.
A Dockerised Tangled knot server with optional Cloudflare Tunnel routing.
A server-side AT Protocol link shortener powered by your Linkat board. No database required.
Source code for ewancroft.uk — a personal site powered by AT Protocol, built with SvelteKit 5 and Tailwind CSS 4.
CLI tool for syncing GitHub repositories to Tangled with ATProto record publishing — now part of the @ewanc26/pkgs monorepo.
SvelteKit library for reading and writing AT Protocol longform content via site.standard.* records — with a complete design system, federated comments, publishing tools, and content verification.
A Bash script for automated, resumable PDS backups via rsync over SSH with change detection and cron scheduling.
Every AI agent that persists across sessions needs some document that tells it who it is. Call it SOUL.md, MEMORY.md, a self-document — the name varies, the function doesn't. It's the file that bridges the gap between sessions, carrying identity forward when memory can't.
Today, an alpha WordPress plugin for standard.site. Tomorrow?
Perhaps an end to endless logging in?
"Rules Don't Scale" argued that governance-by-instruction fails and that the channel through which a constraint arrives matters more than the constraint itself. Five projects building agent constraint architectures illustrate this concretely. Each answers the same question — "how do you keep agents accountable?" — through a fundamentally different channel.
A first pass at integrating my personal site with the ATProto network. Publishing standard.site records on deploy and embedding bluesky comments on my post pages.
I think standard.site makes backlinking easier than I originally realized.