This product was not featured by Product Hunt yet.
It will not be visible on their landing page and won't be ranked (cannot win product of the day regardless of upvotes).

Product upvotes vs the next 3

Waiting for data. Loading

Product comments vs the next 3

Waiting for data. Loading

Product upvote speed vs the next 3

Waiting for data. Loading

Product upvotes and comments

Waiting for data. Loading

Product vs the next 3

Loading

Keryx

The Fullstack TypeScript Framework for MCP and APIs

Keryx is a TypeScript framework built on Bun where one action class is your HTTP endpoint, your WebSocket handler, your CLI command, your background task, and your MCP tool. Same logic, validation, middleware, and response type. MCP and OAuth 2.1 are built in.

Top comment

Hi! I'm Evan, the maker.

If you've shipped an MCP server in the last year, you've probably noticed you're writing your API twice. Your REST endpoints have Zod schemas, auth middleware, error handling, logging. Then you write a parallel MCP server that re-declares all of it with slightly different shapes, a different auth model, and its own way of returning errors. The two drift. Bugs only show up in one. It's the same duplication problem REST and WebSocket had a decade ago.

Keryx is the framework I wanted for that. You write one action class, and it's automatically your HTTP endpoint, your WebSocket handler, your CLI command, your background task, and your MCP tool. Same Zod inputs, same middleware chain, same response shape. The only thing that changes is how the request arrives.

export class UserCreate implements Action {
  name = "user:create";
  inputs = z.object({ name: z.string().min(3), email: z.string().email() });
  web = { route: "/user", method: HTTP_METHOD.PUT };
  task = { queue: "default" };
  
  async run(params) { return { user: await createUser(params) }; }
}


That class is now a `PUT /api/user` endpoint, a WebSocket action, a CLI command with `--name` and `--email` flags generated from the schema, a Resque-backed background job, and an MCP tool with OAuth 2.1.

The stack underneath: Bun for runtime (native TS, no build step, fast test runner), Zod for validation, Drizzle for the database with auto-migrations, Resque for jobs, and a Vite + React example frontend with end-to-end typed responses via `ActionResponse`. First-party plugins for OpenTelemetry tracing and a Resque admin UI ship in the same repo.

Quick start:


bunx keryx new my-app
cd my-app && bun install && bun dev

We are pre-1.0, but it's real enough to share now. I'm running it in production, the docs at keryxjs.com are complete, and the example app is a working chat with channels, files, sessions, and the React frontend wired up. (For the Node.js old-timers: this is the spiritual successor to ActionHero, rewritten ground-up on Bun with MCP as a first-class transport.)

Happy to answer anything in the comments, especially curious to hear from people who've hit the "writing MCP twice" wall.

- Evan (@evantahler)

About Keryx on Product Hunt

The Fullstack TypeScript Framework for MCP and APIs

Keryx was submitted on Product Hunt and earned 3 upvotes and 1 comments, placing #131 on the daily leaderboard. Keryx is a TypeScript framework built on Bun where one action class is your HTTP endpoint, your WebSocket handler, your CLI command, your background task, and your MCP tool. Same logic, validation, middleware, and response type. MCP and OAuth 2.1 are built in.

On the analytics side, Keryx competes within Software Engineering, Developer Tools, Artificial Intelligence and GitHub — topics that collectively have 1.1M followers on Product Hunt. The dashboard above tracks how Keryx performed against the three products that launched closest to it on the same day.

Who hunted Keryx?

Keryx was hunted by Evan Tahler. A “hunter” on Product Hunt is the community member who submits a product to the platform — uploading the images, the link, and tagging the makers behind it. Hunters typically write the first comment explaining why a product is worth attention, and their followers are notified the moment they post. Around 79% of featured launches on Product Hunt are self-hunted by their makers, but a well-known hunter still acts as a signal of quality to the rest of the community. See the full all-time top hunters leaderboard to discover who is shaping the Product Hunt ecosystem.

For a complete overview of Keryx including community comment highlights and product details, visit the product overview.