|||

Projects

Like any builder, I have a set of projects I dabble in. Most of them are in open source software which I've shared below. Those built in wood and robots are a little harder to share :)

If you want a hand building software with your team, you can Hire Me.

🌿 Fernfiles

Fernfiles (https://fernfiles.com) is a self-hostable file store that feels like Dropbox did when everyone loved it — small, fast, and delightful — with a markdown-native heart. It runs as a hosted service and as a self-hosted deployment from the same code.

Durability is the hard constraint: writes are etag-gated so a conflict never picks a loser, deletes are tombstones, and the durability tests — SIGKILL mid-write, two writers racing on a file, delete-then-restore — gate every release. File viewers are independent packages discovered at build time, so installing the video viewer is what makes transcoding exist.

The source will be public shortly.

Stack: TypeScript · React · React Router · PostgreSQL · Prisma · Kubernetes · Kustomize · Skaffold · Flux GitOps · Vitest · Playwright · GitHub Actions

Tayle Tayle

Tayle is an AI-powered storytelling platform that simplifies the process of capturing and preserving personal and collective memories. Through guided voice interviews and curated media integration, Tayle transforms an informal verbal interview into interactive multimedia stories and printable memoirs, facilitating the creation of lasting legacies.

I serve as co-founder and lead engineer of Tayle. We use LLMs from OpenAI and Groq for real-time voice interviewing — identifying the key people, places, and moments in someone's interview, then summarizing it in different forms. Function calling curates the interview as it happens, Model Context Protocol (MCP) supplies the tools and context to the AI interviewer, and WebRTC streams the audio in the browser.

Here is a video of me presenting an early version of Tayle at AI Tinkerers in Seattle.

Stack: TypeScript · Node.js · React · OpenAI · Groq · MCP · WebRTC · Kubernetes

Ramblefeed Ramblefeed

Ramblefeed (https://ramblefeed.com) is a personal notes and bookmarks feed — tweets for yourself. Short markdown notes and bookmarked links, tagged, kept private or published to a public feed. Bookmarks are captured with a bookmarklet rather than a browser extension, so it works on iOS Safari, and the server unfurls OpenGraph metadata to render real link cards.

Search is a weighted PostgreSQL full-text index rather than a bolted-on service, so titles outrank body content and URLs tokenize into something you can actually search for. The development environment is Kubernetes, so there's no docker-compose that drifts from production.

Stack: TypeScript · React · React Router · PostgreSQL · Prisma · Kubernetes · Kustomize · Skaffold · Flux GitOps · Vitest · Playwright · GitHub Actions

Auth

Github @activescott/auth is a deliberately small, framework-agnostic authentication library: passwordless magic links and one-time codes over email and SMS, plus passkeys, with rate limiting, bot checks, and multi-identity account linking. No third-party identity providers.

I wrote it because I kept reaching for a hosted identity provider on projects that didn't want the dependency, and I'd rather own the one part of my apps that everything else depends on. It's MIT licensed and on npm, now at v5, and it's what signs you in to both Ramblefeed and Fernfiles.

Stack: TypeScript · Node.js · JWT/JWS (jose) · WebAuthn passkeys (SimpleWebAuthn) · Zod · Cloudflare Turnstile · Twilio · Vitest · Playwright · GitHub Actions

Lessmsi

Lessmsi is a tool to view and extract the contents of a Windows Installer (.msi) file, and at more than 1,700 GitHub stars it's the most widely used thing I've built. There was a time when I did a lot of work with complex installers and this is a culmination of frustration and learning about them :) Its companion library LessIO dealt with some obscure but critical issues encountered with the file system in .NET framework and libmspack4n was a port/wrapper in C to handle native support for CAB files - which ironically the native Windows APIs occasionally struggled with.

Stack: C# · .NET Framework · Windows Forms · C · WiX · Windows Installer (MSI) & CAB file formats · xUnit

Tinkerbell

Tinkerbell is an agentic AI security platform focused on prompt-injection defense — protecting LLM-powered applications and agents from adversarial inputs that try to hijack their instructions, exfiltrate data, or subvert tool use. As AI agents gain access to real tools and sensitive data, prompt injection becomes the security boundary that matters most, and Tinkerbell is my exploration of detecting and defending against it.

Stack: TypeScript · Node.js · LLMs · agentic pipelines · Kubernetes

GPU Poet GPU Poet

GPUPoet (https://gpupoet.com, source at Github activescott/gpu-agent) is a GPU price comparison and performance analysis platform that helps users find the best GPU for their money by combining real-time marketplace prices with performance benchmarks. It serves both gamers building rigs and machine learning practitioners setting up AI workstations.

This idea goes back to some tinkering I did years ago doing data analysis on GPU performance for profitable cryptocurrency mining. Back in the day people paid more for mining hardware than they were ever likely to earn from it. I learned that with some careful analysis I could determine the likely earnings from a chip over a period of time, and most of the ones that worked were unpopular used cards. Later I added some analysis of GPU performance for machine learning and then gaming. Ironically, the GPU mining scene kind of lost my interest after Ethereum staking and it isn't even on the site anymore.

The hard part isn't the site, it's the data. A GPU's price-per-performance is only meaningful if you can reconcile the same chip across a dozen vendor spellings, pair it with real benchmarks, and throw out the marketplace listings that are actually scams or accessories. So behind the site there's a private pipeline that scrapes benchmarks, normalizes GPU naming, and maintains a specification dataset — FP32/FP16 TFLOPS, INT8 TOPS, memory bandwidth, TDP, compute capability — with agentic AI pipelines doing the collection, curation, and listing triage. The monthly market reports come out of the same pipeline, and every claim in the editorial gets cross-checked against the query behind the chart it sits next to.

The public site itself has been a playground for server-side rendering, SEO, A/B testing, and online advertising.

Stack: TypeScript · Next.js · React · PostgreSQL · Prisma · Turborepo · MDX · Chart.js · agentic AI pipelines · Kubernetes · Kustomize · Skaffold · Playwright · GitHub Actions

Serverless Framework Tools

At AWS I worked alongside the AWS Lambda launch team and quickly bought into their vision. I'm not against hosts at all costs, but Serverless is wonderful in many applications and Serverless Framework made Lambda+API Gateway significantly easier to use and manage.

Serverless AWS Static File Handler makes it easy to serve static files with the Serverless Framework on AWS Lambda.

I also wrote Github Serverless HTTP Invoker for locally invoking Serverless functions via their HTTP event as declared in serverless.yml. You can always test the logic behind a route directly, but this exercises the tiny bit of critical glue and middleware that links that logic to the real world.

Stack: JavaScript · Node.js · AWS Lambda · API Gateway · Serverless Framework · Mocha · GitHub Actions

Agent Markdown

In my journey away from prolific use of Apple Notes (I'm currently on NotePlan, but was on TiddlyWiki recently) I wrote an interesting script to export Apple Notes to markdown. Apple Notes has (had?) an unusual invalid HTML format under the covers. I ended up writing Agent Markdown as an HTML -> Markdown library. This was mostly a fun learning exercise, as there are other libraries out there. More than anything though this one focus on replicating the layout of HTML rather than just the markup semantics. It's often negligible difference but it was fun to read the CSS spec and replicate the CSS Visual Formatting Model in a simplistic scenario.

Stack: TypeScript · Node.js · htmlparser2 · CSS Visual Formatting Model · Jest · GitHub Actions

Self Hosting

I have an array of self-hosted apps at home and a soft spot for SRE and operations. My home setup runs on dedicated hardware with Kubernetes, Flux GitOps, and a handful of other self-hosted services. The Kubernetes config is at Github activescott/home-infra-k8s-flux.

Stack: Kubernetes · Flux GitOps · Helm · Kustomize · SOPS/age · Traefik · cert-manager · Prometheus · Grafana · Loki · zot OCI registry

Ethereum & Blockchain

I run a home Ethereum validator node as part of the decentralized staking network. I've also contributed major features to Rocket Pool, a leading open-source Ethereum liquid staking protocol — work significant enough to be compensated via bounties and reviewed and accepted by the core maintainer team.

Stack: Go · Ethereum · smart contracts · validator operations

These are just some that seem more popular and that I thought worth mentioning, but there are more than a couple other projects on Github my Github 😁

Latest posts 2026 Won't Be the Year of AI Slop. It'll Be the Year We Wake Up to AI Security. Curating AI Coding Agents: Why 80% AI-Written Code Still Needs a Human in the Driver's Seat The 2025 Government Shutdown: How and Why It Happened How to Regain SSH Access to Your AWS EC2 Instance When Locked Out AI Learns to Listen: TypeScript Client for OpenAI's Realtime API