kody is currently an experiment in building a personal assistant that can work
across AI agent hosts that support MCP.
Today this repo includes a Remix-powered UI, Cloudflare Worker request routing,
chat-agent plumbing, and OAuth-protected MCP endpoints. The long-term direction
is not a huge static tool catalog. It is a compact MCP surface with broader
capabilities hidden behind a compact search tool plus Code Mode execute
flows.
This project is intentionally single-user right now and is being built for
me@kentcdodds.com.
The repo is organized as an Nx monorepo, with shared modules in
packages/shared (@kody-internal/shared), the main app worker under
packages/worker, and mock Workers under packages/mock-servers/*.
npx create-epicflareThis will clone the template, install dependencies, run the guided setup, and start the dev server.
See docs/getting-started.md for the full setup
paths and expectations.
If you are trying to understand what this repository is for, start with
docs/project-intent.md.
| Layer | Technology |
|---|---|
| Runtime | Cloudflare Workers |
| UI Framework | Remix 3 (alpha) |
| Package Manager | npm |
| Workspace | Nx + npm workspaces |
| Database | Cloudflare D1 |
| Session/OAuth | Cloudflare KV |
| MCP State | Durable Objects |
| E2E Testing | Playwright |
| Bundler | esbuild |
- Personal assistant experiment, not a multi-tenant SaaS product
- MCP-first architecture intended to work across compatible AI agent hosts
- Compact MCP surface area preferred over a large static tool inventory
- ChatGPT is a likely primary host target, while keeping the server usable from other MCP hosts where practical
Request → packages/worker/src/index.ts
│
├─→ OAuth handlers
├─→ MCP endpoints
├─→ Static assets (`packages/worker/public/`)
└─→ Server router → Remix components
packages/worker/src/index.tsis the entrypoint for Cloudflare Workers- OAuth requests are handled first, then MCP requests, then static assets
- Non-asset requests fall through to the server handler and router
- Client assets are bundled into
packages/worker/public/and served via theASSETSbinding
| Document | Description |
|---|---|
docs/getting-started.md |
Setup, environment variables, deploy |
docs/environment-variables.md |
Adding new env vars |
docs/cloudflare-offerings.md |
Optional Cloudflare integrations |
docs/project-intent.md |
Scope, goals, and non-goals |
docs/agents/setup.md |
Local development and verification |
