Open Source

I contribute to open source because it's the best way I've found to learn new tech, share what I've figured out, and give back to a community that's given me a lot. Some of these projects I started; some I lead; some I'm just an active contributor to. The list below is in rough order of how much of my attention each one gets right now.
If any of this is useful to you, you can sponsor my open-source work via GitHub Sponsors.
Featured Projects
The flagships: projects I started, BDFL, and where most of my open-source energy lives.
actionhero/keryx
actionhero/keryx — Keryx: The Fullstack TypeScript Framework for MCP and APIs
✨ 29 stars · 🍴 5 forks
A fullstack TypeScript framework for APIs and MCP servers. Write one Action class. Get HTTP, WebSockets, an MCP server, a CLI, and a background task runner, all from the same code. The thinking behind it is in Announcing Keryx. This is where my evenings go right now.
keryxjs.com · Announcement post
actionhero/actionhero
actionhero/actionhero — Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
✨ 2,417 stars · 🍴 258 forks
The realtime multi-transport Node.js framework I started in 2012 and still maintain. Stable, well-tested, and powering production traffic at companies I've never even heard of. Why Choose Actionhero is the long version of the pitch.
grouparoo/grouparoo
grouparoo/grouparoo — 🦘 The Grouparoo Monorepo - open source customer data sync framework
✨ 773 stars · 🍴 117 forks
The open-source reverse-ETL company I co-founded as CTO. Acquired by Airbyte in 2021; the repo is archived but the ideas live on inside Airbyte's data sync foundation.
elasticsearch-dump/elasticsearch-dump
elasticsearch-dump/elasticsearch-dump — Import and export tools for elasticsearch & opensearch
✨ 7,923 stars · 🍴 868 forks
The import/export swiss-army-knife for Elasticsearch and OpenSearch. Started at TaskRabbit, now a community-maintained project that's racked up nearly 8k stars.
Active Maintenance
Newer side projects and smaller libraries I'm actively building on.
evantahler/mcpx
evantahler/mcpx — A command-line interface for MCP servers. curl for MCP.
✨ 32 stars · 🍴 4 forks
A command-line interface for MCP servers. curl for MCP. Coding agents already know how to use the CLI; this lets them talk to MCP servers the same way. Background in curl for MCP.
evantahler/botholomew
evantahler/botholomew — Local, autonomous AI agent for knowledge work — works your task queue while you sleep.
✨ 2 stars · 🍴 0 forks
A local, autonomous AI agent for knowledge work. Hand it a task queue, walk away, let it grind through the backlog.
evantahler/macos-ts
evantahler/macos-ts — TypeScript package for reading and searching Apple Notes, iMessages, and more on macOS via direct SQLite access. Includes markdown conversion, attachment support, and offers a local MCP server!
✨ 2 stars · 🍴 0 forks
Typed APIs over your iCloud data: Notes, Messages, Photos, Contacts. Absorbs the SQLite weirdness so you don't have to.
actionhero/node-resque
actionhero/node-resque — Node.js Background jobs backed by redis.
✨ 1,410 stars · 🍴 150 forks
Redis-backed background jobs for Node.js. Part of the Actionhero ecosystem.
actionhero/ah-sequelize-plugin
actionhero/ah-sequelize-plugin — sequelize plugin for actionhero
✨ 36 stars · 🍴 22 forks
Work Contributions
Major projects I contribute to as part of my day job.
ArcadeAI/arcade-mcp
ArcadeAI/arcade-mcp — MCP Server Framework and Tool Development library for building custom capabilities into agents.
✨ 882 stars · 🍴 89 forks
airbytehq/airbyte
airbytehq/airbyte — Open-source data movement for ELT pipelines and AI agents — from APIs, databases & files to warehouses, lakes, and AI applications. Both self-hosted and Cloud.
✨ 21,194 stars · 🍴 5,157 forks
Earlier Projects
Older projects I'm not actively developing but that still get used.
taskrabbit/empujar
taskrabbit/empujar — When you need to push data around, you push it. A node.js ETL tool.
✨ 142 stars · 🍴 15 forks
evantahler/dont-be-a-jerk
evantahler/dont-be-a-jerk — view on GitHub.
Live repo data couldn't be fetched at build time.
Support this work
If any of these projects has saved you an afternoon, GitHub Sponsorships is the cleanest way to say thanks. Every sponsorship goes directly toward the time I spend maintaining the open-source side of my work: keeping issues moving, releases shipping, and docs vaguely up to date.