MCPcopy Index your code
hub / github.com/connorhpbrn/creed

github.com/connorhpbrn/creed @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
1,490 symbols 4,450 edges 342 files 13 documented · 1% 1 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Creed

One file across every agent.

Your personal context, written once and kept polished by your agents — so every AI you talk to knows you instantly.

Website · Docs · Privacy · Stack


What is Creed?

Anyone using AI seriously hits the same tax: re-explaining themselves every chat, every tool, every session.

Creed kills that tax with one file.

You write yourself down once — your role, goals, preferences, routines, the people who matter, anything you want every AI to know — and connected agents read that file before they answer you. As they learn new things about you, they propose updates. You approve the good ones. The file sharpens over time.

It's not a notes app. It's not a journal. It's not a memory dump. It's a curated personal-context profile, sized to fit on one page, that travels with you across Claude, ChatGPT, Codex, Cursor, OpenClaw, Hermes, OpenCode, and any custom agent you wire up.


Why Creed exists

There's a small set of tools every AI-native person re-invents for themselves: a "system prompt" that grows in their notes, a CLAUDE.md they paste into every project, a list of "things ChatGPT keeps getting wrong about me." Creed is what happens when you decide that file should be a real product, not a hack.

The file is plain Markdown. The app exists to:

  • help you write the first draft (4-vibe onboarding tuned to who you are)
  • score quality and surface gaps (a monthly AI allowance, or bring your own OpenRouter key)
  • let agents read and propose updates without you copy-pasting
  • keep one canonical version across every tool you use

If you've ever maintained a personal creed.md by hand, this is that, with the boring parts solved.


How it works

┌──────────────────────┐         ┌────────────────────┐
│  You — onboarding    │ ──────► │  Your Creed file   │
│  (one short pass)    │         │  10 sections, MD   │
└──────────────────────┘         └─────────┬──────────┘
                                           │
                              ┌────────────┴────────────┐
                              ▼                         ▼
                  ┌─────────────────────┐    ┌──────────────────────┐
                  │  Agent reads it     │    │  Agent proposes an   │
                  │  before answering   │    │  update; you approve │
                  └─────────────────────┘    └──────────────────────┘

The file has 10 sections — five core, five optional — sized so the whole thing reads in under a minute:

Always-on Optional
Identity Beliefs
Goals Constraints
Work People
Preferences Health
Routines Context

Every section is agent-writable. Every change goes through the review (or direct-edit, if you trust it).


Status

Creed is in active development. Personal Creed is the core one-user product. Creed Company extends the same file model into a shared workspace with roles, per-section permissions, attribution, invitations, pooled AI credits, and seat billing.

Paid hosted plans include a monthly AI allowance for first-party features like quality analysis, billed as prepaid credits, with an optional bring-your-own-OpenRouter-key mode. Self-hosted development can run the app locally with your own Supabase, Stripe, and OpenRouter configuration.


Run it locally

You'll need:

  • Node.js 20+
  • a Supabase project (free tier is fine)
  • an OpenRouter API key (only needed for the AI-powered features — onboarding synthesis, quality analysis, refinement)
  • a Stripe account (only needed for hosted-style paid plans, Company seats, and webhooks)

1. Clone and install

git clone https://github.com/<your-fork>/creed.git
cd creed
npm install

2. Configure environment

Copy the template and fill in values:

cp .env.example .env.local

.env.example documents every variable Creed reads. The minimum to boot the app:

NEXT_PUBLIC_SITE_URL=http://localhost:3000
NEXT_PUBLIC_SUPABASE_URL=https://<your-project>.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=<your-supabase-publishable-key>
SUPABASE_SECRET_KEY=<your-supabase-service-role-key>
CREED_ENCRYPTION_SECRET=<base64-encoded-32-byte-secret>

Generate the encryption secret with openssl rand -base64 32.

Optional (branding shown in the public chrome, payments, GitHub integration, feedback widget) are all documented inline in .env.example — copy whichever ones you want to enable.

3. Run database migrations

# install Supabase CLI if you don't have it: brew install supabase/tap/supabase
supabase link --project-ref <your-project-ref>
supabase db push

This creates every table Creed needs (sections, proposals, activity, tokens, MCP, GitHub, AI usage, audit log, rate limits, Stripe entitlements) plus the row-level-security policies that make sure users only ever see their own data.

4. (Optional) Wire up Stripe

The hosted Creed gates /file and /onboarding behind a paid entitlement (Personal is $12/mo, $99/yr, or $199 lifetime). For local development you can either:

  • Skip it — leave STRIPE_* env vars unset. The app still boots; signed-in users without an entitlement row are redirected to /pricing by the layout guard. Useful when you only want to work on marketing pages or non-paid flows.
  • Run the full flow — add the four STRIPE_* variables from .env.example using your sandbox/test keys, then in a second terminal run: bash stripe listen --forward-to localhost:3000/api/stripe/webhook Copy the whsec_… it prints into STRIPE_WEBHOOK_SECRET. The webhook auto-grants entitlements when test payments complete.

5. Start the dev server

npm run dev

Open http://localhost:3000. Sign in with Google and you'll land on /pricing (or /onboarding if you've granted yourself an entitlement row manually for development).

Deploying your own

If you're standing up a separate hosted Creed (not contributing back to this repo):

  • Set NEXT_PUBLIC_SITE_URL to your deployed origin so OAuth callback and Stripe redirect URLs resolve correctly.
  • Set CREED_CSP_ENFORCE=1 in production once you've watched one deploy cycle in Report-Only mode.
  • The Stripe webhook signing secret in production differs from your local whsec_… — create a webhook endpoint in the live Stripe dashboard pointing at https://<your-domain>/api/stripe/webhook and use that secret.
  • The dormant example agent prompts in lib/creed-data.ts reference https://creed.md purely as illustration; real users see URLs derived from your NEXT_PUBLIC_SITE_URL at request time.

Connect an agent

Once you have a Creed, open /connections and add the Creed MCP URL to your agent as a custom connector. The client opens a browser, you click Allow on the Creed consent screen, and it's connected. No tokens to copy. We have first-class flows for:

  • Claude Code (a one-line claude mcp add command)
  • Codex
  • OpenClaw
  • Hermes
  • OpenCode
  • Cursor (one-click "Add to Cursor")
  • Custom Agent (any client that speaks MCP)

MCP uses OAuth 2.1: Creed is its own authorization server (/authorize, /token, /register, /.well-known/*), so any spec-compliant client connects from the server URL alone. The agent verifies it can read your file and starts shaping replies around it from the next message forward. For clients that don't speak MCP, the /api/creed HTTP API is the documented fallback.


Stack

  • Next.js 16 (App Router, Turbopack)
  • React 19 + TypeScript
  • Tailwind CSS v4 + shadcn/ui
  • Tiptap for the rich-text editor
  • Framer Motion for the calmer-than-normal interactions
  • Supabase for auth, Postgres, RLS, realtime
  • OpenRouter for first-party AI (managed credits or BYOK)
  • Stripe for hosted Personal and Company billing

A complete tour of the public stack lives at creed.md/stack.


Repository tour

app/                    Next.js routes (marketing, app, API)
├── (creed-app)/        signed-in product (/file, /connections, /settings)
├── api/                session-authed and token-authed APIs
├── auth/callback/      OAuth callback
├── home/               public landing
├── onboarding/         7-step onboarding flow
└── proxy.ts            request-id + path-aware request forwarding

components/
├── creed/              the product UI
├── marketing/          the public site
├── auth/               sign-in / hero
└── ui/                 shadcn primitives + animated icons

lib/
├── creed-data.ts       types, section IDs, agent contract
├── creed-backend.ts    Supabase reads/writes
├── company-*.ts        Company roles, seats, billing, invites, writes
├── ai/                 OpenRouter, model catalog, quality
├── onboarding/         the synthesizer pipeline
└── supabase/           browser + server clients

supabase/migrations/    canonical schema
public/                 static assets

Commands

npm run dev      # local dev server (Turbopack)
npm run build    # production build
npm run lint     # ESLint
npm run start    # serve a built app

npx tsc --noEmit -p .   # typecheck only

Contributing

We'd love contributions. Read CONTRIBUTING.md before opening a PR — it's short and saves both of us time.

If you're an AI agent picking up this codebase to make changes, read AGENTS.md first instead. It's the same information, written for you.


Security

Found a vulnerability? Please don't open a public issue. See SECURITY.md for the responsible-disclosure path.


License

MIT.

Extension points exported contracts — how you extend this code

Commands (Interface)
(no doc)
components/creed/extensions/chip-row.tsx
StampIconHandle (Interface)
(no doc)
components/ui/stamp.tsx
StampIconProps (Interface)
(no doc)
components/ui/stamp.tsx
LockOpenIconHandle (Interface)
(no doc)
components/ui/lock-open.tsx
LockOpenIconProps (Interface)
(no doc)
components/ui/lock-open.tsx
MessageSquareIconHandle (Interface)
(no doc)
components/ui/message-square.tsx

Core symbols most depended-on inside this repo

cn
called by 296
lib/utils.ts
getSupabaseAdminClient
called by 72
lib/supabase/admin.ts
stringArg
called by 65
app/mcp/route.ts
requireApiAuth
called by 48
lib/api-auth.ts
getCreedRole
called by 34
lib/creed-membership.ts
nextMutationTick
called by 30
components/creed/creed-provider.tsx
validateAgentActions
called by 28
lib/panel/agent.ts
assertNoError
called by 26
lib/creed-backend.ts

Shape

Function 1,383
Interface 107

Languages

TypeScript100%

Modules by API surface

components/creed/creed-provider.tsx61 symbols
lib/creed-backend.ts54 symbols
components/creed/file-screen.tsx47 symbols
app/mcp/route.ts41 symbols
components/creed/company-settings.tsx35 symbols
components/creed/settings-screen.tsx32 symbols
lib/stripe.ts28 symbols
lib/creed-data.ts27 symbols
lib/ai/quality.ts26 symbols
lib/company-sections.ts24 symbols
components/creed/company-onboarding-screen.tsx23 symbols
lib/ai/credits.ts22 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

For agents

$ claude mcp add creed \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact