freshcrate
Home > MCP Servers > keryx

keryx

Keryx: The Fullstack TypeScript Framework for MCP and APIs

Description

Keryx: The Fullstack TypeScript Framework for MCP and APIs

README

Keryx

The fullstack TypeScript framework for MCP and APIs.

Keryx

Test

What is this Project?

This is a ground-up rewrite of ActionHero, built on Bun. I still believe in the core ideas behind ActionHero — it was an attempt to take the best ideas from Rails and Node.js and shove them together — but the original framework needed a fresh start with Bun, Zod, Drizzle, and first-class MCP support.

The big idea: write your controller once, and it works everywhere. A single action class handles HTTP requests, WebSocket messages, CLI commands, background tasks, and MCP tool calls — same inputs, same validation, same middleware, same response. No duplication.

That includes AI agents. Every action is automatically an MCP tool — agents authenticate via built-in OAuth 2.1, get typed errors, and call the same validated endpoints your HTTP clients use. No separate MCP server, no duplicated schemas.

One Action, Every Transport

Here's what that looks like in practice. This is one action:

export class UserCreate implements Action {
  name = "user:create";
  description = "Create a new user";
  inputs = z.object({
    name: z.string().min(3),
    email: z.string().email(),
    password: secret(z.string().min(8)),
  });
  web = { route: "/user", method: HTTP_METHOD.PUT };
  task = { queue: "default" };

  async run(params: ActionParams<UserCreate>) {
    const user = await createUser(params);
    return { user: serializeUser(user) };
  }
}

That one class gives you:

HTTPPUT /api/user with JSON body, query params, or form data:

curl -X PUT http://localhost:8080/api/user \
  -H "Content-Type: application/json" \
  -d '{"name":"Evan","email":"evan@example.com","password":"secret123"}'

WebSocket — send a JSON message over an open connection:

{ "messageType": "action", "action": "user:create",
  "params": { "name": "Evan", "email": "evan@example.com", "password": "secret123" } }

CLI — flags are generated from the Zod schema automatically:

./keryx.ts "user:create" --name Evan --email evan@example.com --password secret123 -q | jq

Background Task — enqueued to a Resque worker via Redis:

await api.actions.enqueue("user:create", { name: "Evan", email: "evan@example.com", password: "secret123" });

MCP — exposed as a tool for AI agents automatically:

{
  "mcpServers": {
    "my-app": {
      "url": "http://localhost:8080/mcp"
    }
  }
}

Same validation, same middleware chain, same run() method, same response shape. The only thing that changes is how the request arrives and how the response is delivered.

That's it. The agent can now discover all your actions as tools, authenticate via OAuth, and call them with full type validation.

Key Components

  • MCP-native — every action is an MCP tool with OAuth 2.1 auth, typed errors, and per-session isolation
  • Transport-agnostic Actions — HTTP, WebSocket, CLI, background tasks, and MCP from one class
  • Zod input validation — type-safe params with automatic error responses and OpenAPI generation
  • Built-in background tasks via node-resque, with a fan-out pattern for parallel job processing
  • Strongly-typed frontend integrationActionResponse<MyAction> gives the frontend type-safe API responses, no code generation needed
  • Drizzle ORM with auto-migrations (replacing the old ah-sequelize-plugin)
  • Companion Vite + React frontend as a separate application (replacing ah-next-plugin)
  • Streaming responses — SSE and chunked binary streaming via StreamingResponse, with per-transport behavior (HTTP, WebSocket, MCP)
  • Pagination helperspaginationInputs() Zod mixin + paginate() utility for standardized paginated responses
  • Database transactionswithTransaction() and TransactionMiddleware for automatic commit/rollback across action execution
  • Redis caching patterns — cache-aside and response-level cache middleware using the built-in ioredis connection

Why Bun?

TypeScript is still the best language for web APIs. But Node.js has stalled — Bun is moving faster and includes everything we need out of the box:

  • Native TypeScript — no compilation step
  • Built-in test runner
  • Module resolution that just works
  • Fast startup and an excellent packager
  • fetch included natively — great for testing

Project Structure

  • root — a slim package.json wrapping the workspaces. bun install and bun dev work here, but you need to cd into each workspace for tests.
  • packages/keryx — the framework package (publishable)
  • example/backend — the example backend application
  • example/frontend — the example Vite + React frontend
  • docs — the documentation site

Quick Start

Create a new project:

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

Requires Bun, PostgreSQL, and Redis. See the Getting Started guide for full setup instructions.

Developing the framework itself

If you're contributing to Keryx, clone the monorepo instead:

git clone https://github.com/actionhero/keryx.git
cd keryx
bun install
cp example/backend/.env.example example/backend/.env
cp example/frontend/.env.example example/frontend/.env
bun dev

Production Builds

bun compile
# set NODE_ENV=production in .env
bun start

Databases and Migrations

We use Drizzle as the ORM. Migrations are derived from schemas — edit your schema files in schema/*.ts, then generate and apply:

cd example/backend && bun run migrations
# restart the server — pending migrations auto-apply

Actions, CLI Commands, and Tasks

Unlike the original ActionHero, we've removed the distinction between actions, CLI commands, and tasks. They're all the same thing now. You can run any action from the CLI, schedule any action as a background task, call any action via HTTP or WebSocket, and expose any action as an MCP tool for AI agents. Same input validation, same responses, same middleware.

Web Actions

Add a web property to expose an action as an HTTP endpoint. Routes support :param path parameters and RegExp patterns — the route lives on the action itself, no separate routes.ts file:

web = { route: "/user/:id", method: HTTP_METHOD.GET };

WebSocket Actions

Enabled by default. Clients send JSON messages with { messageType: "action", action: "user:create", params: { ... } }. The server validates params through the same Zod schema and sends the response back over the socket. WebSocket connections also support channel subscriptions for real-time PubSub.

CLI Actions

Enabled by default. Every action is registered as a CLI command via Commander. The Zod schema generates --flags and --help text automatically:

./keryx.ts "user:create" --name evan --email "evantahler@gmail.com" --password password -q | jq

The -q flag suppresses logs so you get clean JSON. Use --help on any action to see its params.

Task Actions

Add a task property to schedule an action as a background job. A queue is required, and frequency is optional for recurring execution:

task = { queue: "default", frequency: 1000 * 60 * 60 }; // every hour

MCP Actions

When the MCP server is enabled (MCP_SERVER_ENABLED=true), every action is automatically registered as an MCP tool. AI agents and LLM clients (Claude Desktop, VS Code, etc.) can discover and call your actions through the standard Model Context Protocol. Actions can also be exposed as MCP resources (URI-addressed data) and prompts (named templates) via mcp.resource and mcp.prompt.

Action names are converted to valid MCP tool names by replacing : with - (e.g., user:create becomes user-create). The action's Zod schema is converted to JSON Schema for tool and prompt parameter definitions.

To exclude an action from MCP tools:

mcp = { tool: false };

To expose an action as an MCP resource or prompt:

// Resource — clients fetch this by URI
mcp = { tool: false, resource: { uri: "myapp://status", mimeType: "application/json" } };

// Prompt — clients invoke this as a named template
mcp = { tool: false, prompt: { title: "Greeting" } };

OAuth 2.1 with PKCE is used for authentication — MCP clients go through a browser-based login flow, and subsequent tool calls carry a Bearer token tied to the authenticated user's session.

Fan-Out Tasks

A parent task can distribute work across many child jobs using api.actions.fanOut() for parallel processing. Results are collected automatically in Redis. See the Tasks guide for full API and examples.

Streaming Responses

Actions can stream data by returning a StreamingResponse. The framework handles SSE, chunked binary, and cross-transport behavior automatically:

async run(params: { prompt: string }) {
  const sse = StreamingResponse.sse();

  (async () => {
    try {
      for await (const token of callLLM(params.prompt)) {
        sse.send(token, { event: "token" });
      }
      sse.close();
    } catch (e) {
      sse.sendError(String(e));
    }
  })();

  return sse;
}

Over HTTP this is native SSE; over WebSocket each chunk becomes an incremental message; over MCP chunks are forwarded as logging messages. See the Streaming guide for full details.

Coming from ActionHero?

Keryx keeps the core ideas but rewrites everything on Bun with first-class MCP support. The biggest changes: unified controllers (actions = tasks = CLI commands = MCP tools), separate frontend/backend applications, Drizzle ORM, and MCP as a first-class transport.

See the full migration guide for details.

Production Deployment

Each application has its own Dockerfile, and a docker-compose.yml runs them together. You probably won't use this exact setup in production, but it shows how the pieces fit together.

Documentation

Full docs at keryxjs.com, including:

Keryx lion

Release History

VersionChangesUrgencyDate
v0.25.1## What's Changed * Raise CLI integration test timeout to avoid flaky 5s default by @evantahler in https://github.com/actionhero/keryx/pull/412 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.25.0...v0.25.1High4/21/2026
v0.25.0## What's Changed * Preserve original error cause via ES2022 Error.cause (closes #353) by @evantahler in https://github.com/actionhero/keryx/pull/410 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.24.2...v0.25.0High4/21/2026
v0.24.2## What's Changed * Load channels Lua scripts at module scope (closes #356) by @evantahler in https://github.com/actionhero/keryx/pull/409 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.24.1...v0.24.2High4/21/2026
v0.24.1## What's Changed * Move flapPreventer from module scope onto API instance (closes #355) by @evantahler in https://github.com/actionhero/keryx/pull/407 * Extract throwConnectionError() helper for db/redis initializers (closes #363) by @evantahler in https://github.com/actionhero/keryx/pull/408 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.24.0...v0.24.1High4/21/2026
v0.24.0## What's Changed * Add tests for Action, StreamingResponse, example actions, and HTTP helpers by @evantahler in https://github.com/actionhero/keryx/pull/405 * Replace initializer priorities with a dependency graph (closes #347) by @evantahler in https://github.com/actionhero/keryx/pull/406 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.23.2...v0.24.0High4/21/2026
v0.23.2## What's Changed * Use proper TypeScript overload signatures for fanOut() (closes #351) by @evantahler in https://github.com/actionhero/keryx/pull/404 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.23.1...v0.23.2High4/21/2026
v0.23.1## What's Changed * Test revoked refresh token cannot be exchanged (closes #382) by @evantahler in https://github.com/actionhero/keryx/pull/403 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.23.0...v0.23.1High4/21/2026
v0.23.0## What's Changed * Add tests for CONNECTION_CHANNEL_VALIDATION error branch by @evantahler in https://github.com/actionhero/keryx/pull/399 * Test OAuth token and authorization code expiration by @evantahler in https://github.com/actionhero/keryx/pull/398 * Reject symlinks escaping staticDir; test path traversal (#381) by @evantahler in https://github.com/actionhero/keryx/pull/400 * Add missing framework unit tests for redis, db, transaction, oauth, web* by @evantahler in https://github.com/actiHigh4/21/2026
v0.22.1## What's Changed * Add WebSocket helpers to keryx/testing, deduplicate from example (#358) by @evantahler in https://github.com/actionhero/keryx/pull/392 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.22.0...v0.22.1High4/20/2026
v0.22.0## What's Changed * Require connection on Action.run and inline task connection in resque worker by @evantahler in https://github.com/actionhero/keryx/pull/395 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.9...v0.22.0High4/20/2026
v0.21.9## What's Changed * Replace O(n) per-request action routing with compiled Router (#348) by @evantahler in https://github.com/actionhero/keryx/pull/393 * Extract useTestServer() helper to keryx/testing and adopt across tests by @evantahler in https://github.com/actionhero/keryx/pull/394 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.7...v0.21.9High4/19/2026
v0.21.7## What's Changed * Isolate test database for packages/keryx to prevent migration conflicts by @evantahler in https://github.com/actionhero/keryx/pull/345 * Add runtime validation for initializer module augmentation by @evantahler in https://github.com/actionhero/keryx/pull/391 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.6...v0.21.7High4/19/2026
v0.21.6## What's Changed * Replace colors dependency with native ANSI color utilities by @evantahler in https://github.com/actionhero/keryx/pull/344 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.5...v0.21.6Medium4/10/2026
v0.21.5## What's Changed * Replace custom MarkdownLink with vitepress-plugin-llms component by @evantahler in https://github.com/actionhero/keryx/pull/342 * Update all dependencies to latest versions by @evantahler in https://github.com/actionhero/keryx/pull/341 * Replace cookie parser with Bun.CookieMap by @evantahler in https://github.com/actionhero/keryx/pull/343 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.4...v0.21.5Medium4/10/2026
v0.21.4## What's Changed * Fix PostgreSQL auth and update bootstrap for cloud environment by @evantahler in https://github.com/actionhero/keryx/pull/339 * Reorganize documentation structure and improve page descriptions by @evantahler in https://github.com/actionhero/keryx/pull/340 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.3...v0.21.4Medium4/10/2026
v0.21.3## What's Changed * Update Bun setup action and dependencies, add drizzle to gitignore by @evantahler in https://github.com/actionhero/keryx/pull/338 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.2...v0.21.3Medium4/10/2026
v0.21.2## What's Changed * Fix MCP OAuth metadata warnings from mcpdebugger.com by @evantahler in https://github.com/actionhero/keryx/pull/336 * Bump version to 0.21.2 by @evantahler in https://github.com/actionhero/keryx/pull/337 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.21.1...v0.21.2Medium4/3/2026
v0.21.1## What's Changed * Add Render deployment config (Dockerfiles + Blueprint) by @evantahler in https://github.com/actionhero/keryx/pull/328 * Update render.yaml by @evantahler in https://github.com/actionhero/keryx/pull/329 * Fix render.yaml: correct Redis type, domains, and service refs by @evantahler in https://github.com/actionhero/keryx/pull/330 * Fix render yaml by @evantahler in https://github.com/actionhero/keryx/pull/332 * Add health checks and custom domains to render.yaml by @evantahler Medium4/3/2026
v0.20.9## What's Changed * Add MCP Registry publish step to CI workflow by @evantahler in https://github.com/actionhero/keryx/pull/324 * Fix MCP Registry publish: download binary instead of npx by @evantahler in https://github.com/actionhero/keryx/pull/325 * Fix MCP Registry publish: shorten description to ≤100 chars by @evantahler in https://github.com/actionhero/keryx/pull/326 * Remove MCP Registry publishing (not applicable to frameworks) by @evantahler in https://github.com/actionhero/keryx/pull/32Medium4/3/2026
v0.20.5## What's Changed * Fix out-of-date docs: broken examples, wrong references, missing config by @evantahler in https://github.com/actionhero/keryx/pull/298 * Add prominent GitHub star CTA to landing page hero by @evantahler in https://github.com/actionhero/keryx/pull/311 * Add llms.txt link to Built for AI Agents section by @evantahler in https://github.com/actionhero/keryx/pull/312 * Add MCP Registry metadata for directory listings (#303) by @evantahler in https://github.com/actionhero/keryx/pulMedium4/3/2026
v0.20.4## What's Changed * Add MCP/AI discoverability keywords to package.json by @evantahler in https://github.com/actionhero/keryx/pull/310 * Add CI benchmarks for all transports (HTTP, WebSocket, MCP, CLI) by @evantahler in https://github.com/actionhero/keryx/pull/299 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.20.3...v0.20.4Medium4/2/2026
v0.20.3## What's Changed * Add missing behavioral tests for core framework utilities by @evantahler in https://github.com/actionhero/keryx/pull/297 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.20.2...v0.20.3Medium4/1/2026
v0.20.2## What's Changed * Refactor MCP initializer: extract helpers to util/mcpServer.ts by @evantahler in https://github.com/actionhero/keryx/pull/296 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.20.1...v0.20.2Medium3/26/2026
v0.20.1## What's Changed * Add plugin generator to CLI by @evantahler in https://github.com/actionhero/keryx/pull/294 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.20.0...v0.20.1Medium3/23/2026
v0.20.0## What's Changed * Add plugin/extension system for third-party packages (#290) by @evantahler in https://github.com/actionhero/keryx/pull/292 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.19.2...v0.20.0Medium3/23/2026
v0.19.2## What's Changed * Docs: Update README with streaming, pagination, transactions, and caching by @evantahler in https://github.com/actionhero/keryx/pull/291 * Clarify and downgrade OpenAPI response schema cache log by @evantahler in https://github.com/actionhero/keryx/pull/293 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.19.1...v0.19.2Medium3/22/2026
v0.19.1## What's Changed * Docs: Add LLM markdown discovery hints to every page by @evantahler in https://github.com/actionhero/keryx/pull/289 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.19.0...v0.19.1Low3/22/2026
v0.19.0## What's Changed * Docs: Add caching guide with Redis patterns by @evantahler in https://github.com/actionhero/keryx/pull/286 * Add pagination helpers (Zod mixin + utility function) (#287) by @evantahler in https://github.com/actionhero/keryx/pull/288 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.18.0...v0.19.0Low3/22/2026
v0.18.0## What's Changed * Add database transaction helpers (withTransaction, TransactionMiddleware) by @evantahler in https://github.com/actionhero/keryx/pull/285 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.17.1...v0.18.0Low3/22/2026
v0.17.1## What's Changed * Pin @types/bun to ^1.1.8 to stop lockfile churn by @evantahler in https://github.com/actionhero/keryx/pull/284 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.17.0...v0.17.1Low3/22/2026
v0.17.0## What's Changed * Add DB and Redis health checks to status action by @evantahler in https://github.com/actionhero/keryx/pull/280 * Add Typed Clients docs page (#278) by @evantahler in https://github.com/actionhero/keryx/pull/282 * Add streaming / SSE response support (#277) by @evantahler in https://github.com/actionhero/keryx/pull/281 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.16.4...v0.17.0Low3/22/2026
v0.16.4## What's Changed * Remove remaining Prettier references missed in #275 by @evantahler in https://github.com/actionhero/keryx/pull/279 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.16.3...v0.16.4Low3/22/2026
v0.16.3## What's Changed * HTML-escape redirectUrl in OAuth success template by @evantahler in https://github.com/actionhero/keryx/pull/274 * Switch from Prettier to Biome by @evantahler in https://github.com/actionhero/keryx/pull/275 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.16.2...v0.16.3Low3/22/2026
v0.16.2## What's Changed * Fix invalid PreCommit hook event to TaskCompleted by @evantahler in https://github.com/actionhero/keryx/pull/271 * Add Claude Code agents: test-runner, docs-sync, pr-preflight by @evantahler in https://github.com/actionhero/keryx/pull/272 * Require client_id in OAuth token exchange (#268) by @evantahler in https://github.com/actionhero/keryx/pull/273 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.16.1...v0.16.2Low3/22/2026
v0.16.1## What's Changed * Split CLAUDE.md and replace stale skills by @evantahler in https://github.com/actionhero/keryx/pull/270 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.16.0...v0.16.1Low3/22/2026
v0.16.0## What's Changed * Fix out-of-date docs: wrong source paths, incorrect priority tables, wrong type signature by @evantahler in https://github.com/actionhero/keryx/pull/262 * Add markdown response format for MCP tools by @evantahler in https://github.com/actionhero/keryx/pull/267 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.15.4...v0.16.0Low3/22/2026
v0.15.4## What's Changed * Docs: Add agent design patterns guide to agents.md by @evantahler in https://github.com/actionhero/keryx/pull/260 * Fix out-of-date docs examples, incorrect defaults, and generator route bug by @evantahler in https://github.com/actionhero/keryx/pull/261 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.15.3...v0.15.4Low3/16/2026
v0.15.3## What's Changed * Docs: Add Advanced Patterns guide by @evantahler in https://github.com/actionhero/keryx/pull/258 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.15.2...v0.15.3Low3/12/2026
v0.15.2## What's Changed * Fix: Use strict empty object schema for no-parameter MCP tools by @evantahler in https://github.com/actionhero/keryx/pull/256 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.15.1...v0.15.2Low3/11/2026
v0.15.1## What's Changed * Docs: Disambiguate framework and action CLI commands by @evantahler in https://github.com/actionhero/keryx/pull/253 * Add static Swagger HTML page with Scalar API Reference by @evantahler in https://github.com/actionhero/keryx/pull/254 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.15.0...v0.15.1Low3/10/2026
v0.15.0## What's Changed * Chore: Update repository organization to actionhero/keryx by @evantahler in https://github.com/actionhero/keryx/pull/252 **Full Changelog**: https://github.com/actionhero/keryx/compare/v0.14.3...v0.15.0Low3/10/2026
v0.14.3## What's Changed * Fix: webCompression.ts ReadableStream type errors (#250) by @evantahler in https://github.com/evantahler/keryx/pull/251 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.14.2...v0.14.3Low3/9/2026
v0.14.2## What's Changed * Fix: Place @ts-ignore on correct line for CompressionStream by @evantahler in https://github.com/evantahler/keryx/pull/249 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.14.1...v0.14.2Low3/9/2026
v0.14.1## What's Changed * Fix: webCompression.ts type error with DOM lib by @evantahler in https://github.com/evantahler/keryx/pull/248 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.14.0...v0.14.1Low3/9/2026
v0.14.0## What's Changed * Feat: MCP resources, prompts, and server instructions by @evantahler in https://github.com/evantahler/keryx/pull/246 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.13.1...v0.14.0Low3/6/2026
v0.13.1## What's Changed * Fix: Use OAuth token as sessionId for MCP connections by @evantahler in https://github.com/evantahler/keryx/pull/245 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.13.0...v0.13.1Low3/5/2026
v0.13.0## What's Changed * Feat: Support raw Response passthrough from actions (#242) by @evantahler in https://github.com/evantahler/keryx/pull/243 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.12.4...v0.13.0Low3/5/2026
v0.12.4## What's Changed * Fix: Ensure runAfter middleware hooks run on action failure by @evantahler in https://github.com/evantahler/keryx/pull/241 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.12.3...v0.12.4Low3/5/2026
v0.12.3## What's Changed * Feat: Add log param truncation config option by @evantahler in https://github.com/evantahler/keryx/pull/239 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.12.2...v0.12.3Low3/4/2026
v0.12.2## What's Changed * Feat: Auth starter in keryx new scaffold by @evantahler in https://github.com/evantahler/keryx/pull/238 **Full Changelog**: https://github.com/evantahler/keryx/compare/v0.12.1...v0.12.2Low3/3/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

studioOpen-source control plane for your AI agents. Connect tools, hire agents, track every token and dollarv2.268.2
mcp-ts-coreAgent-native TypeScript framework for building MCP servers. Build tools, not infrastructure.main@2026-04-21
frontmcpTypeScript-first framework for the Model Context Protocol (MCP). You write clean, typed code; FrontMCP handles the protocol, transport, DI, session/auth, and execution flow.v1.0.4
@baseplate-dev/plugin-aiAI agent integration plugin for Baseplate — generates AGENTS.md, CLAUDE.md, .mcp.json, and .agents/ configuration files0.6.8
agentconfig.orgElevate your AI assistants by configuring them for any role or workflow. Explore the primitives that unlock their full potential.0.0.0