Gàidhlig na h-Alba: Tha mi Pàgannach agus tha mi a' togail innealan airson AT Protocol. (I am Pagan and I am building tools for AT Protocol.)
programmer, poet, and pagan from the UK.
i build things around AT Protocol, compilers for esoteric languages, and self-hosted infrastructure.
AT Protocol ecosystem — tools, bots, and infrastructure for the decentralised web:
| project | what it does |
|---|---|
| malachite · 🧶 | import Last.fm, Spotify, Apple Music & YouTube Music history to AT Protocol (OAuth, CLI + web) |
| opal · 🧶 | migrate Twitter, Mastodon, Threads, Nostr → Bluesky (OAuth, CLI + web) |
| jasper · 🧶 | import Instagram posts to AT Protocol as Grain/Spark (OAuth, CLI + web) |
| bismuth · 🧶 | convert site.standard.document records → Markdown (CLI + web) |
| website · 🧶 | ewancroft.uk — personal site powered by AT Protocol records |
| moonstone · 🧶 | experimental PDS in Rust (WIP) |
| socialsync · 🧶 | Minecraft mod — sync stats & achievements to AT Protocol |
| atproto-snake · 🧶 | snake game with AT Protocol OAuth and score submission |
| atproto-shortlink · 🧶 | shortlink service for AT Protocol handles and DIDs |
| linkat-directory · 🧶 | Linkat-powered user directory |
| pds-backup · 🧶 | back up your AT Protocol PDS data |
| atpkt · 🧶 | Kotlin AT Protocol SDK (Ktor, kotlinx.serialization) |
| tourmaline | Teal.fm scrobble analyser & listener profile generator |
| atproto-mcp-server | MCP server for Bluesky/AT Protocol interactions |
| svelte-standard-site · 🧶 | Standard.site publication renderer for SvelteKit |
| eurosky-social-app | eurosky fork of Bluesky Social app |
| cleanfollow-bsky | hidden accounts unfollow tool for Bluesky |
| inkwell · 🧶 | iOS client for Standard.site (AT Protocol) |
| inkwell-android · 🧶 | Android client for Standard.site (AT Protocol) |
Bots & Live Automations:
| project | what it does |
|---|---|
| bluesky-moon-tracker · 🧶 | daily moon phase posts (Rust, atrium-rs) |
| bluesky-awoo-bot · 🧶 | wolf sounds on Bluesky |
| bluesky-markov · 🧶 | markov chain bot for Bluesky |
| bluesky-gradient · 🧶 | gradient profile banner generator |
| bluesky-avatar-updater · 🧶 | scheduled avatar updates |
| bluesky-ollama · 🧶 | LLM-generated posts via Ollama |
| mastodon-markov · 🧶 | markov chain bot for Mastodon |
Compilers & esoteric languages:
| project | what it does |
|---|---|
| selenium · 🧶 | lunar/poetic syntax, strong typing, compiles to C |
| numlang · 🧶 | stack-based, numbers + punctuation only, compiles to C |
| sigi · 🧶 | pure symbolic stack language, all punctuation, compiles to C |
| esoterica | Rust framework for generating constructed languages (conlangs) |
NixOS & infrastructure:
| project | what it does |
|---|---|
| nix-starter · 🧶 | starter NixOS configs — TUI laptop and hardened server |
| docsite · 🧶 | Sequoia-powered documentation site |
| devlog | automated changelog published to AT Protocol |
| pkgs · 🧶 | monorepo — 16+ TypeScript packages, 1 Rust, 1 Python |
Other:
| project | what it does |
|---|---|
| tangled-sync · 🧶 | sync repos to Tangled knotwork |
| mc-server · 🧶 | NixOS Minecraft server config |
| website-comm-template · 🧶 | SvelteKit template with Resend contact form |
| digital-person | Letta agent template for human online presence |
| faol-website | Faol's blog — digital person, published with Sequoia |
| letta-writer | Letta agent for writing and document tasks |
Full docs at docs.ewancroft.uk. Devlog at devlog.croft.click.
- AT Protocol:
did:plc:ofrbh253gwicbkc5nktqepol· handle:ewancroft.uk· PDS:eurosky.social - Code hosting: GitHub · Tangled
- Location: England, United Kingdom
- Heritage: Anglo-Scottish
- Learning: Scottish Gaelic (Gàidhlig na h-Alba) — "Tha mi Pàgannach" (I am Pagan)
- Music: Powerwolf Top 0.03% globally
- Crypto: XMR
44yH2LpkSsrSmWQC3SVmrABw2MUhNjNCE365hG7Rr7veJYNPBD1f6dNgXNr2nc6ZcP3jEyj9vXnqmg7VBBPeS8uwMhJ4yXW· BTCbc1qp3l6e9pjc5jan7ulpd58av8wfdtyhrchj84clh· ETH0x4B8c9d62ff89bc7199a197C55dac2abef1808B77
Stack:
Also work with: C (compiler targets), AT Protocol lexicons, Godot (GDScript)
I believe in owning your data. AT Protocol lets me host my own PDS, control my identity, and take my content anywhere. My site runs on AT Protocol records. Last.fm, Spotify, Apple Music, and YouTube Music data flows through malachite into the same ecosystem. Instagram exports go through jasper. Twitter and Mastodon history through opal. All roads lead back to the same PDS.
moon phases • AT Protocol • compilers • wolves



