HNHacker News
TopNewBestAskShowJobs

evantahler

550 karma · joined May 2, 2011

Keeping AI safe and powerful with Arcade.dev. Previously @ Airbyte & co-founder of Grouparoo & Voom. BDFL of Keryxjs.com & Actionherojs.com

* https://www.evantahler.com * https://github.com/evantahler * https://twitter.com/evantahler

[ my public key: https://keybase.io/evantahler; my proof: https://keybase.io/evantahler/sigs/0NsPFHC3XZlVcWViIXGSMTM73ap__K4X_p3Fgj1mwm4 ]

submissionscomments
evantahler··on You said no MCP
We are working on it! https://www.arcade.dev/blog/model-never-needs-to-see-the-fil...
evantahler··on Show HN: Are You in the Weights?
I’m in the weights!

So… what does this mean for the right to be forgotten?

evantahler··on Arcade just raised $60M. Here's the problem we've been building to solve
If this kind of problem is interesting to you, why yes, we ARE hiring - https://jobs.ashbyhq.com/arcadeai
evantahler··on High Density Living, 2000 Years Ago: Inside the Roman Apartment Building
Check out the city builder Nova Roma - it’s got these apartments! https://store.steampowered.com/app/2426530/Nova_Roma/
evantahler··on The Art of Money Getting
That guy looks nothing like Hugh Jackman
evantahler··on Instructure pays ransom to Canvas hackers
Being that this is HN, do we know how they got hacked? Can we learn something about protecting our services?
evantahler··on Show HN: Keryx: TypeScript framework where one Action becomes HTTP, WS, CLI, MCP
I wrote Actionhero in 2011 to stop duplicating handlers for HTTP and WebSocket. Fifteen years later, that same handler also needs to work for AI agents, so... here’s another framework ;)

This time I fixed all the mistakes, I promise!

evantahler··on icloud-backup: The iCloud backup tool I always wanted
A little OSS project that backs up drive, photos, contacts, and notes to the directory of your choice.

Along the way, me (and Claude) did a large amount of SQLite excivation to learn how apple stores all of this stuff locally. I extracted that into https://github.com/evantahler/macos-ts if you want to use a lower-level API yourself

evantahler··on CC-Canary: Detect early signs of regressions in Claude Code
I feel like asking the thing that you are measuring, and don’t trust, to measure itself might not produce the best measurements.
evantahler··on Keryx – One TypeScript action class, five transports (HTTP, WS, CLI, MCP, tasks)
Hi HN, I’m Evan. I’ve been building API frameworks in JavaScript and Typescript for over a decade (I created Actionhero), and Keryx is the distillation of everything I’ve learned, rebuilt from scratch on Bun and TypeScript.

The big idea: you write one action class with a Zod schema, and the framework serves it as an HTTP endpoint, a WebSocket handler, a CLI command, a background task, and an MCP tool with the same validation, same middleware, same `run()` method. The only thing that changes is how the request arrives.

The MCP part is what pushed me to build this. I work on AI agent infrastructure at Arcade (we do authorization and tooling for AI agents), and I kept seeing folks bolt MCP servers onto existing APIs as a separate layer with duplicated auth, duplicated schemas, and duplicated error handling. Keryx makes your API an MCP server by default — OAuth 2.1 + PKCE built in, per-session isolation, and typed errors that agents can actually distinguish.

The stack is opinionated: Bun, Zod, Drizzle ORM, Redis (for Resque-based background tasks and PubSub), PostgreSQL. No compilation step, sub-second startup.

You can try it right now:

  bunx keryx new my-app
  cd my-app
  cp .env.example .env
  bun install
  bun dev

Requires Bun, PostgreSQL, and Redis running locally (and a `createdb bun` for the default DB).

Some things I’d love feedback on:

- Is the “one action, every transport” abstraction too magical, or does it feel natural once you use it? - The MCP-native approach — is this how you’d want to add agent support to a new project? - Anything missing from the comparison table on the homepage?

Code is MIT licensed: https://github.com/actionhero/keryx

Happy to answer questions about the architecture, the MCP integration, or why I think Bun is ready for this kind of framework.

evantahler··on `mcpx` – MCP in a CLI
I've blogged about the process of making this tool, and some of the design considerations here: https://www.evantahler.com/blog/post/2026-03-13-curl-for-mcp
evantahler··on `mcpx` – MCP in a CLI
What if we put MCP /in/ the CLI?

`mcpx` is a command-line interface for MCP servers. curl for MCP. The internet is debating CLI vs MCP like they're competitors. They're not!

evantahler··on The Linux Foundation Launches the Agentic AI Foundation
Management of the following projects moves to the Linux Foundation:

- MCP

- goose

- AGENTS.md

Learn more @ https://aaif.io/press/linux-foundation-announces-the-formati...

evantahler··on A practical guide to building agents [pdf]
We do this at Arcade.dev with oAuth scopes and token persistence for each agent. There is a grant required for each tool-user tuple the first time, but then it’s remembered
evantahler··on Google to embrace MCP
check out arcade.dev for this!
evantahler··on Avoid ISP Routers (2024)
Monkey brains is great if you can get it! Cheap and reliable and you can use any router you want.
evantahler··on Show HN: Outerbase Studio – Open-Source Database GUI
SequelPro for me!
evantahler··on Airbyte 1.0 – Marketplace, AI Assist, Gen AI Support and Enterprise GA
We've been working on this for a long time - Reliability, new connectors, error handling and more! Check out the technical release notes to learn more: https://github.com/airbytehq/airbyte/releases/tag/v1.0.0
evantahler··on Reclaim the Stack
Porter (https://www.porter.run/) is a great product in the same vein (e.g. turn K8s into a dev-friendly Heroku-like PASS). How does this compare?
evantahler··on Ask HN: Why don't many platform data products offer self hosted?
On the data moving / ETL/ELT space - check out Airbyte. You can self host!
evantahler··on Ask HN: Could you share your personal blog here?
https://evantahler.com/blog
evantahler··on Twitter's Recommendation Algorithm
So uh... they use BigQuery and here's the dataset https://github.com/twitter/the-algorithm/blob/main/ann/src/m...
evantahler··on Bizarre and unusual uses of DNS
Link to pdf slides https://fosdem.org/2023/schedule/event/dns_bizarre_and_unusu...
evantahler··on ‘It took over my life ’ How one man made his dream 90s video game on his own
There was also Skyrates! https://en.m.wikipedia.org/wiki/Skyrates
evantahler··on Launch HN: Needl (YC S22) – Simple search across all your apps
How do you compre to https://slapdash.com?
evantahler··on Show HN: Airbyte, data integration platform with 300+ open-source connectors
I don't think I've seen a YouTube badge on a README before. I like it!
evantahler··on Show HN: A color picker for named web colors
iOS and MacOS. It’s ok in chrome.
evantahler··on Launch HN: Prequel (YC W21) – Sync data to your customer’s data warehouse
Check out the Airbyte Protocol - this is exactly the kind of thing we made it for! https://docs.airbyte.com/understanding-airbyte/airbyte-proto...
evantahler··on Scrumdog – a program to download Jira Issues to a local database
Just noting that you can use an EL(T) tool like Airbyte (OSS) for this as well! The integrations are already built - Jira -> mongo, Jira -> Postgres, etc.

https://docs.airbyte.com/integrations/sources/jira/

evantahler··on Ask HN: How are you dealing with the M1/ARM migration?
Over at Airbyte, we had a project this quarter to update all of our build & publish processes over to building multi-arch (AMD and ARM) docker images. As Airbyte runs entirely within docker, getting a smooth local experience for folks on M1/(2?) Macs was important. We had a long lived support thread (1) where you can see us grow through all the phases - from "nothing works", to "our deps don't work", to "the platform works" and finally to "the connectors work"!

Assuming your base images are themselves already multi-arch, most of the tooling we needed was already built into the `dockerx` build tool, which is awesome - check it out if you haven't (2). Docker has bundled all the tooling and emulation packages (qemu) needed into a single docker image that can publish multi-arch docker images for you! You run docker to emulate docker to publish docker... There are some interesting things that you'll need to do if you publish multi-stage builds, like publish a tmp tag and delete it when you are done, but it's not /too/ terrible. Since Airbyte is OSS, you can check out our connector publish script here (3) to see some examples.

I'd recommend that spending the time to work your multi-arch tooling - not only does it make the local dev experience faster/better, it:

1. unlocks ARM cloud compute, which can be faster/cheaper in many cases (AWS)

2. removes a class of emulation bugs when running AMD images on ARM - mostly around networking & timing (in the JAVA stack anyway)

Links:

1. https://github.com/airbytehq/airbyte/issues/2017

2. https://docs.docker.com/buildx/working-with-buildx

3. https://github.com/airbytehq/airbyte/blob/master/tools/integ...

Page 1 of 7Next →