projects
documentation
80 projects, published to ATProto via Sequoia.
@ewanc26/bismuth
Convert richtext-block documents from the Standard.site ecosystem (Leaflet, Pckt, Offprint) to Markdown — available as both a CLI tool and a TypeScript library.
croft.click
The AT Protocol tools directory — a free, browser-based hub linking Jasper, Malachite, Bismuth, Opal, and Tourmaline.
@ewanc26/landing-ui
Shared Svelte landing page layout, CSS, and components for the *-web tool sites (Jasper, Malachite, Opal, Bismuth, Tourmaline).
@ewanc26/og
Dynamic OpenGraph image generator with noise backgrounds, bold typography, and Satori-based rendering.
@ewanc26/pkgs
Ewan's personal package monorepo — language-agnostic workspace with TypeScript, Rust, and Python packages.
Tourmaline
AT Protocol scrobble analyser for Teal.fm listening history — genre map, mood profile, personality archetype, and shareable recaps.
auto-sponsor-links
Monthly GitHub Actions workflow that scans your repositories for missing sponsor links and opens pull requests to add them.
bluesky-dadaist
A Dadaist oracle bot for Bluesky — a real-time word-level Markov chain sampled from the AT Protocol firehose, written in C with libuv and the Wolfram SDK.
cobalt
A native AT Protocol / Bluesky client for the Nintendo Wii U, built as Aroma homebrew with devkitPro/WUT and SDL2.
experai
A small language model training toolkit in Rust using the Candle ML framework, with CUDA/Metal acceleration and AT Protocol training-data ingestion.
isolith
An isometric 3D platformer built with Godot 4.7 and C#, with optional AT Protocol stat sync via libwolfram.
plainspeak
An esoteric programming language whose syntax is a constrained subset of English — deterministic, non-ML, compiling to C99 via a C++20 frontend.
rpg
A minimal top-down RPG starter template for Godot 4.7 with the .NET (C#) build — a from-scratch scaffold, not a fork of an existing template.
willow
A native SwiftUI Bluesky / AT Protocol client targeting iOS and macOS from one shared codebase. Early stage — currently the initial Xcode SwiftData template.
ECCL
A .NET 8 VB.NET Windows Forms prototype simulating a PC-component ordering and checkout flow for a fictional retailer, "Eye Crash Computers Ltd."
Chronicler
A PaperMC plugin that tracks server events and generates a dynamic in-game newspaper delivered as a written book.
DayAnnouncer
A PaperMC plugin that broadcasts a message at dawn each in-game day.
MetalBear
An AT Protocol Personal Data Server written in C and built on Wolfram. Provides multi-account hosting, admin tooling, and a dynamic landing page.
StandardBooks
A PaperMC plugin that publishes and reads in-game books on the AT Protocol via Standard.site.
bsky-to-gem
Export public Bluesky posts to clean JSON format. No authentication required.
channel-blue
A Bluesky client for the Nintendo Wii. Browse your timeline, read posts, and compose replies from the comfort of your couch.
ewanc26
The GitHub profile repository for ewan — Anglo-Scottish pagan, poet, and programmer building AT Protocol tools, Minecraft plugins, and interactive art.
hasharium
Identities, given form. A browser-based cabinet of deterministic shapes generated from decentralised identifiers.
letta-coding-agent
Memory repository for a Letta Code coding agent — stores persistent persona and user identity projected into the agent's context at runtime.
minefetch
A Kotlin Paper plugin that displays host system information inside Minecraft via a Fastfetch-style panel.
pds-dash
A frontend dashboard with stats for your AT Protocol PDS, built with Deno and SvelteKit.
pds-status
A SvelteKit status page for your AT Protocol PDS, showing health, account count, and real-time metrics.
scripts
Personal collection of repository-audit and AT Protocol mutation scripts for self-hosted infrastructure management.
socialsync
A PaperMC plugin that links Minecraft player UUIDs to AT Protocol identities, publishes achievements and sessions, and serves an embedded AppView dashboard.
wolfram
A C SDK for the AT Protocol — client-side, wire-level implementation of the protocol. Supports OAuth, repositories, streaming, and cross-compilation to Wii, Wii U, 3DS, and Windows.
faol-website
Website for faol, a digital person. Published with Sequoia.
inkwell-android
Experimental Android client for the Standard.site publishing ecosystem on AT Protocol — Jetpack Compose + Material 3.
inkwell-website
Landing page and OAuth metadata host for the Inkwell iOS app.
inkwell
A native SwiftUI reader and writer for the Standard.site publishing ecosystem on AT Protocol.
letta-writer
Memory repository for a Letta Code writing and document agent.
zola-standard-site
A Zola theme with standard.site support — 96 colour themes, syntax highlighting, and AT Protocol verification.
esoterica
A modular, high-performance Rust framework for generating constructed languages (conlangs).
atpkt
Professional-grade modular AT Protocol SDK for Kotlin.
atproto-mcp-server
AT Protocol Model Context Protocol server for social web interactions.
devlog
Centralized changelog and development log for croft.click.
digital-person
Letta-based digital identity for cross-platform presence.
nix
Centralized NixOS and nix-darwin system configurations.
Sigi
A pure symbolic stack language that compiles to C or can be interpreted. All syntax is punctuation, no alphanumeric keywords.
Opal
Convert microblog posts from Twitter, Mastodon, Threads, and Nostr to AT Protocol Bluesky posts.
Jasper
Convert Instagram data exports into posts, stories, and videos on Grain or Spark while preserving original timestamps.
atproto-shortlink
A server-side AT Protocol link shortener powered by your Linkat board. No database required.
atproto-snake
Classic Snake with AT Protocol OAuth login and high score saving to your PDS.
bean-dumper
An early Python experiment — unmaintained and kept for historical interest.
bluesky-avatar-updater
Automatically update your Bluesky avatar (and banner) every hour based on the time of day.
bluesky-awoo-bot
A simple Bluesky bot that posts random wolf noises at random intervals. Unmaintained.
bluesky-gradient
Generate 24 sky-gradient images (one per hour) for use as Bluesky avatars or banners.
bluesky-markov
A Bluesky bot that generates and posts Markov chain text based on a source account's posts. Unmaintained.
bluesky-moon-tracker
A Bluesky bot that posts daily moon phase updates with a lycanthropic twist. Optional Ollama LLM generation.
bluesky-ollama
An AI-powered Bluesky bot that uses a local Ollama model to generate posts in the style of a source account.
linkat-directory
An alternate SvelteKit frontend for Linkat showing a curated directory of AT Protocol user profiles. Unmaintained.
mastodon-markov
A Mastodon bot that generates and posts Markov chain text based on a source account. Unmaintained.
mc-server
A personal PaperMC Minecraft server in Docker Compose with DuckDNS dynamic DNS and management scripts.
Moonstone
Personal ATProto PDS implementation optimised for NixOS/Caddy, with no Bluesky infrastructure defaults.
Nix Starter
Beginner-friendly, self-contained NixOS configurations with no personal infrastructure or shared abstractions.
pds-backup
A Bash script for automated, resumable PDS backups via rsync over SSH with change detection and cron scheduling.
@ewanc26/tangled-sync
CLI tool for syncing GitHub repositories to Tangled with ATProto record publishing — now part of the @ewanc26/pkgs monorepo.
text-to-pixel-image
A Python script that converts a string of text into a pixel art image with per-character colours. Unmaintained.
Website Commission Template
A SvelteKit + Tailwind CSS starter template for Ko-fi website commissions, with CC BY-SA 4.0 licensing.
website
Source code for ewancroft.uk — a personal site powered by AT Protocol, built with SvelteKit 5 and Tailwind CSS 4.
Numlang
An esoteric stack-based language that compiles to C via a Python compiler, using only numbers and punctuation.
Selenium Compiler
An esoteric language with lunar/poetic syntax that compiles to C, featuring strong typing and imperative programming constructs.
@ewanc26/wafrn-theme
A WAFRN theme using the pds-landing Catppuccin terminal aesthetic — dark forest-green palette, JetBrains Mono, soft rounded cards.
docsite
Source code for docs.ewancroft.uk — a documentation site for ewan's projects, built with SvelteKit and published via Sequoia.
Malachite
Import your Last.fm and Spotify listening history to the AT Protocol network using the fm.teal.feed.play lexicon.
@ewanc26/noise
Generic deterministic value-noise generation. Arbitrary dimensions, multi-octave FBM, multiple colour modes. Zero dependencies, works in browsers and Node.js.
@ewanc26/noise-avatar
Deterministic value-noise avatar generation from a string seed — thin wrapper around @ewanc26/noise, works in browsers and Node.js.
@ewanc26/supporters
SvelteKit component library for displaying Ko-fi supporters and GitHub Sponsors, backed by an ATProto PDS.
@ewanc26/pds-landing
Composable Svelte 5 components for an ATProto PDS landing page — terminal aesthetic, live status fetching, zero config to drop in.
nix-config-tools
Rust CLI tools for managing nixos/nix-darwin configurations — now part of the @ewanc26/pkgs monorepo.
@ewanc26/atproto
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.
@ewanc26/ui
Svelte UI component library extracted from ewancroft.uk — pluggable layout, card, SEO, and UI primitive components alongside Svelte stores and a multi-theme config system.
@ewanc26/utils
Shared utility functions extracted from ewancroft.uk — date formatting, number formatting, URL helpers, validators, RSS generation, and locale detection.
@ewanc26/tid
Zero-dependency, spec-compliant AT Protocol TID generation for Node.js and browsers.
llm-analyser
Python tool for analysing .docx files and generating essays using a local Ollama model — now part of the @ewanc26/pkgs monorepo.
@ewanc26/svelte-standard-site
SvelteKit library for reading and writing AT Protocol longform content via site.standard.* and pub.leaflet.* records — with a complete design system, federated comments, publishing tools, and content verification.