Skip to content
Conduit

mcp server

onebrain

Persistent AI memory layer for humans & agents. Syncs context across ChatGPT, Claude, Gemini. REST API, MCP, SDKs. GDPR-compliant, self-hostable.

onebrainaimemory/onebraincommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 21, 2026

OneBrain

License: AGPL-3.0 CI npm TypeScript Docker GDPR

Your AI Memory Layer. OneBrain stores your identity, preferences, knowledge, decisions, and projects in a structured system — and delivers optimized context to any AI assistant via REST API or MCP protocol.

Available as hosted SaaS (zero setup) or self-hosted on your own infrastructure. Both modes are 100% GDPR/DSGVO-compliant with EU data residency.

Try it now — no installation required

onebrain.rocks is a free, live instance you can use immediately:

  • Sign up with a magic link (no password needed)
  • Create memories, connect your AI tools, explore the API
  • Invite AI agents via invite links
  • Full API documentation at onebrain.rocks/api/eu/v1/openapi

Register your AI agent

Use these public invite links to connect your AI agent to OneBrain:

Access LevelInvite Link
Read-Only (context, brain, entities)onebrain.rocks/invite/MgjYQqncucDU
Read + Write (full access)onebrain.rocks/invite/PfmfKDMdxkCs

Or register via API:

curl -X POST https://onebrain.rocks/api/eu/v1/invite/register \
  -H "Content-Type: application/json" \
  -d '{"code": "MgjYQqncucDU", "name": "MyAgent", "description": "My AI agent"}'

Want to self-host instead? See Quick Start below.


What is OneBrain?

OneBrain is a persistent, structured memory for humans and AI agents alike. Instead of repeating yourself in every conversation, OneBrain maintains a living profile of who you are, what you know, and what you're working on. Any AI tool — or any AI agent — can query OneBrain to get personalized, relevant context.

For humans: Sync all your AI tools so you never have to explain yourself from scratch again. Tell Claude once, and ChatGPT, Gemini, and every other tool already knows.

For agents: AI agents use OneBrain the same way. An agent stores its knowledge once, and it's available everywhere — across sessions, tools, and platforms.

Key principles:

  • For humans & agents — both store and share knowledge through the same system
  • Privacy-first — your data stays yours. EU/GLOBAL region isolation, httpOnly cookies, encrypted at rest
  • Deterministic — no ML, no embeddings, fully explainable merge logic
  • Multi-language — DE/EN/ES out of the box, extensible to any language
  • AI-agnostic — works with any LLM via REST API or MCP protocol
  • GDPR-compliant — privacy by design, data minimization, consent management, full data portability
  • SaaS or Self-Hosted — DEPLOYMENT_MODE=saas|selfhosted controls features

Architecture

                    ┌──────────────────────────────────────────┐
                    │              Control Plane                │
                    │  ┌────────┐    ┌────────────────────┐    │
                    │  │ Caddy  │───▶│  Web App (Next.js) │    │
                    │  │ :443   │    │  28 pages, PWA     │    │
                    │  └───┬────┘    └────────────────────┘    │
                    └──────┼───────────────────────────────────┘
                           │
              ┌────────────┼────────────────┐
              │ /api/eu    │                │ /api/global
              ▼            │                ▼
  ┌───────────────────┐    │    ┌───────────────────┐
  │    EU Region      │    │    │   GLOBAL Region   │
  │                   │    │    │                   │
  │  ┌─────────────┐  │    │    │  ┌─────────────┐  │
  │  │ Fastify API │  │    │    │  │ Fastify API │  │
  │  │   :3001     │  │    │    │  │   :3001     │  │
  │  └──┬──────┬───┘  │    │    │  └──┬──────┬───┘  │
  │     │      │      │    │    │     │      │      │
  │  ┌──▼──┐ ┌─▼───┐  │    │    │  ┌──▼──┐ ┌─▼───┐  │
  │  │ PG  │ │Redis│  │    │    │  │ PG  │ │Redis│  │
  │  │ 16  │ │  7  │  │    │    │  │ 16  │ │  7  │  │
  │  └─────┘ └─────┘  │    │    │  └─────┘ └─────┘  │
  │                   │    │    │                   │
  │  ┌─────────────┐  │    │    │  ┌─────────────┐  │
  │  │ MCP Server  │  │    │    │  │ MCP Server  │  │
  │  │  (stdio)    │  │    │    │  │  (stdio)    │  │
  │  └─────────────┘  │    │    │  └─────────────┘  │
  └───────────────────┘    │    └───────────────────┘
                           │
              Strict network isolation
              No shared DB between regions

Region isolation ensures EU and GLOBAL data never mix — separate PostgreSQL databases, Redis instances, Docker networks, and compose stacks.


Tech Stack

LayerTechnologyVersion
API ServerFastify5.2
FrontendNext.js + React15.1 / 19.0
DatabasePostgreSQL + Prisma16 / 6.x
CacheRedis7
AuthMagic Link + JWT + OAuth + TOTPjose 6.0
PaymentsStripe (built-in, not active)20.4
MCPModel Context Protocol SDK1.27
ValidationZod3.23
i18nJSON-based (DE/EN/ES)—
SecurityHelmet, HSTS, CSP, CSRF—
Reverse ProxyCaddy (auto-HTTPS)2
ContainersDocker (multi-stage, non-root)—
BuildTurborepo + pnpm2.3 / 9.15
TestingVitest3.0
CI/CDGitHub Actions—

Monorepo Structure

onebrain/
├── apps/
│   ├── api/                  # REST API (Fastify 5.2, port 3001)
│   │   ├── src/
│   │   │   ├── routes/       # 26 route modules (~150 endpoints)
│   │   │   ├── services/     # 27 business logic services
│   │   │   ├── middleware/    # 3 middleware (auth, limits, email verify)
│   │   │   ├── lib/          # 18 utilities (audit, cache, tokens, PII mask...)
│   │   │   │   └── context-engine/  # Relevance scoring + token compression
│   │   │   └── __tests__/    # 23 test files (365 tests)
│   │   └── package.json
│   ├── web/                  # Web UI (Next.js 15, port 3000)
│   │   ├── src/
│   │   │   ├── app/          # 28 pages (App Router)
│   │   │   └── components/   # 27 components (CSS Modules)
│   │   ├── public/           # PWA manifest, service worker, icons
│   │   └── package.json
│   └── mcp/                  # MCP server for AI tools (stdio)
│       └── package.json
├── packages/
│   ├── db/                   # Prisma schema (31 models, 8 enums)
│   │   └── prisma/
│   │       ├── schema.prisma
│   │       └── migrations/   # 5 migrations
│   ├── shared/               # TypeScript types
│   ├── schemas/              # 14 Zod validation schemas
│   └── i18n/                 # Translations (DE/EN/ES)
├── infra/
│   ├── control-plane/        # Caddy + Web (docker-compose)
│   ├── region-eu/            # EU-isolated stack (docker-compose)
│   ├── region-global/        # Global-isolated stack (docker-compose)
│   └── docker/               # Multi-stage Dockerfiles (API, Web, MCP)
├── .github/workflows/        # CI/CD (ci.yml, deploy.yml)
├── .env.example              # Environment template
├── CHANGELOG.md              # Version history
├── FEATURELIST.md            # 455 features (20 categories)
└── DSGVO-REPORT.md           # GDPR compliance report

🧩 Integrations & SDKs

OneBrain works with your favorite tools and frameworks out of the box:

IntegrationLanguageInstall
MCP Server (Claude, Cursor, Windsurf)TypeScriptnpx onebrain-mcp
Python SDKPythonpip install onebrain-sdk
LangChainPythonpip install onebrain-langchain
LlamaIndexPythonpip install onebrain-llama-index
Vercel AI SDKTypeScriptnpm install onebrain-ai-sdk
OpenClawTypeScriptonebrain-openclaw
Node.js SDKTypeScriptnpm install onebrain
Laravel SDKPHPcomposer require onebrain/laravel

All integrations are open-source (AGPL-3.0) and self-hosted compatible.


Quick Start

Prerequisites

  • Node.js >= 20
  • pnpm >= 9
  • PostgreSQL 16
  • Redis 7 (optional for dev, required for production)

Installation

# Clone and install
git clone <repo-url> onebrain
cd onebrain
pnpm install

# Create database
createdb onebrain

# Configure environment
cp .env.example .env
# Edit .env — set DATABASE_URL, JWT_SECRET (min 32 chars)

# Run migrations & generate Prisma client
DATABASE_URL="postgresql://user@localhost:5432/onebrain" \
  pnpm --filter @onebrain/db exec prisma migrate deploy

pnpm --filter @onebrain/db exec prisma generate

Start Development

# All apps at once (via Turborepo)
pnpm dev

# Or individually:

# Terminal 1: API (port 4002)
DATABASE_URL="postgresql://user@localhost:5432/onebrain" \
  API_PORT=4002 \
  pnpm --filter @onebrain/api exec tsx src/index.ts

# Terminal 2: Web (port 3000)
NEXT_PUBLIC_API_URL=http://localhost:4002 \
  pnpm --filter @onebrain/web exec next dev

Demo Login

In development mode (NODE_ENV !== 'production'), demo logins are available:

  1. Open http://localhost:3000/login
  2. Click "Demo Login (Development)" for admin access
  3. Or use "Demo User Login" for regular user access

Demo admin: admin@onebrain.demo — Demo user: user@onebrain.demo


SDK — npm install onebrain

The official OneBrain SDK gives you typed access to the entire API from Node.js, Deno, or any JavaScript/TypeScript runtime.

npm install onebrain

Quick Example

import { OneBrain } from 'onebrain';

const brain = new OneBrain({
  apiKey: 'ob_your_key_here',
  baseUrl: 'https://onebrain.rocks/api/eu', // default
});

// Read your brain context
const context = await brain.context.get('assistant');
console.log(context.text);

// Write a memory
await brain.memory.create({
  type: 'fact',
  title: 'Likes TypeScript',
  body: 'Prefers TS over JS for all projects',
});

// Search memories
const results = await brain.memory.search({ query: 'TypeScript' });

// Agent Sync — read full context
const sync = await brain.connect.read();

// Agent Sync — write batch memories
await brain.connect.writeMemories([
  { type: 'preference', title: 'Dark mode', body: 'Prefers dark themes' },
  { type: 'skill', title: 'React', body: 'Advanced React developer' },
]);

SDK Features

ModuleMethods
brain.memorycreate, get, update, delete, list, search, extract, import, consolidate
brain.entitycreate, get, update, delete, list, addLink, graph, merge, autoExtract
brain.projectcreate, get, update, delete, list, addMemoryLink
brain.brainprofile, updateProfile, context
brain.contextget (scopes: brief, assistant, project, deep)
brain.connectread, writeMemory, writeMemories (Agent Sync Protocol)
brain.billingusage, plan
brain.apiKeyslist, create, updateTrustLevel, revoke

Configuration

const brain = new OneBrain({
  apiKey: 'ob_your_key', // Required — get from dashboard
  baseUrl: 'https://...', // Default: https://onebrain.rocks/api/eu
  timeout: 10000, // Default: 10s
  headers: { 'X-Custom': 'val' }, // Optional extra headers
});

Error Handling

import { OneBrainError, OneBrainTimeoutError } from 'onebrain';

try {
  await brain.memory.create({ type: 'fact', title: 'Test', body: 'test' });
} catch (err) {
  if (err instanceof OneBrainTimeoutError) {
    console.error('Request timed out');
  } else if (err instanceof OneBrainError) {
    console.error(err.code, err.message, err.requestId);
  }
}
  • Zero runtime dependencies
  • Dual ESM/CJS builds
  • Full TypeScript types
  • Node.js >= 18
  • AGPL-3.0 License

Links:


Authentication

OneBrain supports multiple authentication methods:

MethodUse CaseFlow
Magic LinkPrimary loginEmail → verify token → JWT
PasswordOptionalEmail + password → JWT
OAuth 2.0Google (Apple planned)ID token → JWT
TOTPTwo-factor authPassword/magic link + 6-digit code
API KeyExternal tools, MCPAuthorization: ApiKey ob_xxx

Token Strategy

  • Access token: 15min, httpOnly cookie (accessToken, secure, sameSite strict)
  • Refresh token: 7d, httpOnly cookie (path-scoped to /v1/auth)
  • CSRF protection: X-Requested-With header required for cookie-based auth
  • API keys: SHA-256 hashed, prefix-based (ob_), scoped permissions

Available API Key Scopes

ScopeAccess
brain.readRead brain profile, context, and memory
brain.writeUpdate brain profile
memory.extract.writeCreate memories via text extraction
entity.readRead entities and entity links
entity.writeCreate, update, and delete entities
connect.readRead brain context via Connect protocol
connect.writeWrite memories via Connect protocol

API Keys and 2FA

API keys are machine-to-machine credentials. They bypass 2FA/TOTP completely — this is by design. Two-factor authentication is only enforced for interactive human login (password, magic link, OAuth). API keys authenticate via timing-safe hash comparison and are scoped to specific permissions, making them safe for automated agents and CI/CD pipelines.

Admin routes always require an interactive session and reject API key auth.

Privacy by Design — Zero-Knowledge Identity

OneBrain's authentication system is intentionally built to decouple your identity from your knowledge.

What we store: Your email address and your 2FA secret — nothing else. No name, no phone number, no profile picture, no billing address. Your email is the key to the door, and your authenticator app is the lock.

What this means: The memories, skills, entities, and projects inside your OneBrain are never tied to a real-world identity. There is no username, no display name, no social profile linking back to you. Your knowledge exists in OneBrain — but OneBrain doesn't know who you are.

This is by design, not by accident:

PrincipleImplementation
Minimal identityOnly email + TOTP secret stored — no name, phone, or address
No profile linkingNo social graphs, no friend lists, no public profiles
Pseudonymous usageAPI keys and sessions reference a UUID, never a person
Knowledge ≠ IdentityYour brain's content cannot be traced back to you without your email
2FA as gatekeeperMandatory TOTP ensures that even email access alone isn't enough

The result: even if someone accessed the database directly, they would find encrypted memories linked to anonymous UUIDs — with no way to connect them to a real person without the corresponding email and 2FA credentials.


API Reference

Base URL: /v1 — All endpoints return { data, error, meta } envelope.

Auth (7 endpoints)

MethodEndpointAuthDescription
POST/v1/auth/magic-link—Request magic link email
POST/v1/auth/verify—Verify token, set JWT cookies
POST/v1/auth/refreshCookieRefresh access token
POST/v1/auth/logoutJWTEnd current session
POST/v1/auth/logout-allJWTEnd all sessions
POST/v1/auth/regionJWTSet data region (EU/GLOBAL)
GET/v1/auth/meJWTCurrent user profile

Password Auth (2 endpoints)

MethodEndpointAuthDescription
POST/v1/auth/register—Register with email + password
POST/v1/auth/login—Login with email + password

OAuth (3 endpoints)

MethodEndpointAuthDescription
POST/v1/auth/oauth/google—Google OAuth login (ID token)
POST/v1/auth/oauth/apple—Apple OAuth login (ID token)
POST/v1/auth/oauth/github—GitHub OAuth login (code exchange)

TOTP (3 endpoints)

MethodEndpointAuthDescription
POST/v1/auth/totp/setupJWTGenerate TOTP secret + QR URI
POST/v1/auth/totp/verifyJWTVerify and enable TOTP
POST/v1/auth/totp/disableJWTDisable TOTP

Sessions (2 endpoints)

MethodEndpointAuthDescription
GET/v1/sessionsJWTList active sessions
DELETE/v1/sessions/:idJWTRevoke specific session

Brain & Memory (8 endpoints)

MethodEndpointAuthDescription
GET/v1/brain/profileJWT/KeyUser identity profile
PUT/v1/brain/profileJWT/KeyUpdate identity profile
GET/v1/brain/contextJWT/KeyFull brain projection
GET/v1/memoryJWT/KeyList memories (paginated)
POST/v1/memoryJWT/KeyCreate memory
GET/v1/memory/:idJWT/KeySingle memory
PATCH/v1/memory/:idJWT/KeyUpdate memory
DELETE/v1/memory/:idJWT/KeyDelete memory

Memory Extraction & Ingestion (3 endpoints)

MethodEndpointAuthDescription
POST/v1/memory/extractJWT/KeyAI memory extraction from text
POST/v1/ingest/urlJWTIngest content from URL (SSRF-protected)
POST/v1/ingest/fileJWTIngest uploaded file (PDF, text)

Context Engine (1 endpoint)

MethodEndpointAuthDescription
GET/v1/context/:scopeJWT/KeyOptimized LLM context

Scopes: brief (500 tokens), assistant (2K), project (3K), deep (8K)

Content negotiation: Accept: text/plain returns formatted text for direct LLM injection.

Entities (5 endpoints)

MethodEndpointAuthDescription
GET/v1/entitiesJWT/KeyList entities (paginated)
POST/v1/entitiesJWT/KeyCreate entity
PATCH/v1/entities/:idJWT/KeyUpdate entity
DELETE/v1/entities/:idJWT/KeyDelete entity
POST/v1/entities/:id/linksJWT/KeyCreate entity relationship

Projects (5 endpoints)

MethodEndpointAuthDescription
GET/v1/projectsJWTList projects (paginated)
POST/v1/projectsJWTCreate project
PATCH/v1/projects/:idJWTUpdate project
DELETE/v1/projects/:idJWTDelete project
POST/v1/projects/:id/memory-linksJWTLink memory to project

Tags (4 endpoints)

MethodEndpointAuthDescription
GET/v1/tagsJWTList tags
POST/v1/tagsJWTCreate tag
POST/v1/memory/:id/tagsJWTTag a memory
DELETE/v1/memory/:id/tags/:tagIdJWTRemove tag from memory

Merge Engine (2 endpoints)

MethodEndpointAuthDescription
POST/v1/merge/runJWTRun deterministic merge cycle
GET/v1/merge/historyJWTView merge logs

Daily Learning (3 endpoints)

MethodEndpointAuthDescription
GET/v1/daily-question/todayJWTToday's learning question
POST/v1/daily-question/:id/answerJWTSubmit answer
GET/v1/daily-questionJWTQuestion history (paginated)

API Keys (4 endpoints)

MethodEndpointAuthDescription
GET/v1/api-keysJWTList API keys
POST/v1/api-keysJWTCreate API key
DELETE/v1/api-keys/:idJWTRevoke API key
PATCH/v1/api-keys/:idJWTUpdate agent config (name, trust, scopes, rate limit)

Connected Agents (7 endpoints)

MethodEndpointAuthDescription
GET/v1/agentsJWTList agents with sync stats
GET/v1/agents/summaryJWTCross-agent summary (calls, errors, candidates)
GET/v1/agents/activityJWTAll-agent activity feed (paginated)
GET/v1/agents/:id/summaryJWTSingle-agent summary
GET/v1/agents/:id/activityJWTSingle-agent activity feed
POST/v1/agents/:id/candidatesJWTBulk approve/dismiss candidates
GET/v1/connect/:key/deltaApiKeyDelta sync — memories updated since last query

Sharing & Export (6 endpoints)

MethodEndpointAuthDescription
POST/v1/sharesJWTCreate brain snapshot
GET/v1/shares/:token—View snapshot (public)
GET/v1/export/jsonJWTFull brain export (JSON)
GET/v1/export/markdownJWTFull brain export (Markdown)
GET/v1/export/ai-promptJWTAI system prompt from brain
POST/v1/referralsJWTCreate referral code

User & GDPR (5 endpoints)

MethodEndpointAuthDescription
GET/v1/user/profileJWTUser profile
PATCH/v1/user/profileJWTUpdate profile
GET/v1/user/exportJWTGDPR data export (14 categories)
DELETE/v1/userJWTAccount deletion (soft delete, 30d grace)
GET/v1/user/usage-summaryJWTCurrent usage stats

Billing (4 endpoints, conditional)

Registered only when STRIPE_SECRET_KEY is set.

MethodEndpointAuthDescription
POST/v1/billing/checkoutJWTCreate Stripe checkout session
GET/v1/billing/portalJWTStripe customer portal URL
GET/v1/billing/subscriptionJWTCurrent subscription status
POST/v1/billing/change-planJWTUpgrade/downgrade plan

Webhooks (1 endpoint, conditional)

MethodEndpointAuthDescription
POST/v1/webhooks/stripeStripe sigStripe event handler

Admin (8+ endpoints)

All require admin role.

MethodEndpointDescription
GET/POST/PATCH/v1/admin/plansPlan CRUD
GET/POST/v1/admin/plans/:id/limitsPlan limits
GET/POST/v1/admin/plans/:id/featuresPlan features
GET/PATCH/v1/admin/usersUser management
GET/v1/admin/usage/:userIdUsage statistics
GET/v1/admin/audit-logsAudit logs (paginated)

Legal & OpenAPI (4 endpoints)

MethodEndpointAuthDescription
GET/v1/legal/impressum—Legal notice (JSON)
GET/v1/legal/datenschutz—Privacy policy (JSON)
GET/v1/legal/agb—Terms of service (JSON)
GET/v1/openapi.json—OpenAPI specification

Health (1 endpoint)

MethodEndpointDescription
GET/healthDB connectivity check, system status

MCP Server

Connect OneBrain to any MCP-compatible AI tool (Claude Desktop, Cursor, Windsurf, etc.):

{
  "mcpServers": {
    "onebrain": {
      "command": "node",
      "args": ["apps/mcp/dist/index.js"],
      "env": {
        "ONEBRAIN_API_URL": "http://localhost:4002",
        "ONEBRAIN_API_KEY": "ob_your_api_key_here"
      }
    }
  }
}

6 MCP tools available:

ToolDescription
get_user_contextFull brain context for AI personalization
search_memoryFilter memories by type, status, keyword
write_memoryExtract and store new memories from text
upsert_entityFind or create people, places, concepts
get_project_contextProject details with linked memories
get_daily_questionToday's learning question

All MCP tools delegate to the REST API — no duplicated business logic.


Context Engine

The context engine delivers optimized, token-budgeted context to AI tools. It scores items by relevance (source priority 35% + confidence 35% + recency 30%), filters by scope, and compresses to fit the token budget.

ScopeToken BudgetUse Case
brief500Quick lookups, chat titles
assistant2,000Standard AI conversations
project3,000Project-focused work
deep8,000Comprehensive analysis
# JSON response (default)
curl http://localhost:4002/v1/context/assistant \
  -H "Authorization: ApiKey ob_your_key"

# Plain text (for direct LLM system prompt injection)
curl http://localhost:4002/v1/context/assistant \
  -H "Authorization: ApiKey ob_your_key" \
  -H "Accept: text/plain"

Identity (user profile) is never dropped during compression — it is always included regardless of budget constraints.


AI Integration (Sync Protocol)

Overview

OneBrain keeps all your AI assistants in sync. Give any AI a single Connect URL once — it reads your context and writes back new learnings automatically. No plugins to install, no platform-specific configuration, no manual copy-pasting between tools.

The Sync Protocol v1 is a two-endpoint contract:

  1. Read — AI fetches a system prompt containing the user's full brain context
  2. Write-back — AI sends new learnings to OneBrain as structured memories

Any AI that can make HTTP requests can participate. The protocol is embedded directly in the system prompt, so the AI knows how and when to sync without additional instruction.

Sync Protocol v1

How It Works

  1. You generate a Connect URL in the OneBrain dashboard (Settings > Integrations)
  2. You give that URL to an AI assistant (paste it as a system prompt, add it as an MCP server, or configure it as a plugin)
  3. The AI reads your context via GET /v1/connect/:apiKey — it receives a system prompt containing your identity, preferences, knowledge, and active projects
  4. During conversation, the AI detects new information worth remembering
  5. The AI writes it back via POST /v1/connect/:apiKey/memory — silently, in the background
  6. All your other connected AIs pick up the new memory on their next read

User Commands

CommandBehavior
OBIgnorePauses write-back. The AI still uses existing context but stops saving new information until OBSync or a new conversation.
OBSyncResumes normal sync behavior after an OBIgnore.
OBStatusAI reports whether sync is active or paused, and how many items were synced in the current conversation.

What Gets Synced

  • New project decisions or status updates
  • Preferences the user expresses (tools, languages, workflows)
  • Facts about the user (role changes, new skills, expertise)
  • Goals the user mentions
  • Important experiences or lessons learned

What Does NOT Get Synced

  • Trivial conversation (greetings, small talk)
  • Information already present in the user's brain context
  • Temporary debugging sessions or one-off questions
  • Passwords, tokens, API keys, or secrets
  • Raw code snippets (the decision is synced, not the code)

Trust Levels

When an AI writes back a memory, its status depends on the API key's trust level:

LevelBehaviorUse Case
reviewMemories saved as candidate — user must approve in dashboard before they become activeNew or untested integrations (default)
trustedMemories saved as active — immediately available to all connected AIsEstablished, verified AI connections

Set trust level per API key:

curl -X PATCH https://api.onebrain.rocks/v1/api-keys/:id/trust \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{ "trustLevel": "trusted" }'

Deduplication

The write-back endpoint runs dedup before saving. If a memory with the same type, similar title (Dice coefficient), and similar body already exists, the POST returns the existing memory with 200 OK instead of creating a duplicate. This prevents redundant entries when multiple AIs learn the same fact.

Integration Methods

MethodPlatformsAuto-SyncSetup
Connect URLAny AI with HTTP accessRead + WriteGive URL once as system prompt
MCP ServerClaude Desktop, Cursor, WindsurfRead + WriteAdd to MCP config JSON
ChatGPT ActionsChatGPT Custom GPTsRead + WriteAdd plugin URL to GPT
REST APIAny agent, script, or automationRead + WriteUse API key with connect.* scopes
System PromptAny AI (manual copy-paste)Read onlyCopy context output, paste as system prompt

Setup Guide

Claude Desktop / Cursor (MCP)

Add this to your MCP configuration file (claude_desktop_config.json or .cursor/mcp.json):

{
  "mcpServers": {
    "onebrain": {
      "command": "node",
      "args": ["apps/mcp/dist/index.js"],
      "env": {
        "ONEBRAIN_API_URL": "https://api.onebrain.rocks",
        "ONEBRAIN_API_KEY": "ob_your_api_key_here"
      }
    }
  }
}

The MCP server exposes 6 tools (get_user_context, search_memory, write_memory, upsert_entity, get_project_context, get_daily_question) that delegate to the REST API. See the MCP Server section above for the full tool list.

ChatGPT (Custom GPT)

  1. Create a Custom GPT in ChatGPT
  2. Go to Configure > Actions > Create new action
  3. Set the import URL to: https://api.onebrain.rocks/v1/openapi.json
  4. ChatGPT auto-discovers the Connect read/write endpoints
  5. In the GPT instructions, add your Connect URL:
    https://api.onebrain.rocks/v1/connect/ob_your_api_key_here
    
  6. The GPT reads your brain context at conversation start and writes back new learnings automatically

Gemini (Gem)

  1. Go to Gemini > Gems > Create Gem
  2. In the system instruction field, paste your Connect URL output:
    curl https://api.onebrain.rocks/v1/connect/ob_your_api_key_here
    
  3. Copy the full text output and paste it as the Gem's system instruction
  4. Gemini reads your context on every conversation
  5. For write-back, include the POST URL in the system instruction — Gemini will use it when it identifies new information

Agents (OpenClaw, CrewAI, LangChain, etc.)

Use the REST API directly in your agent's setup or tool configuration:

# Read brain context (returns system prompt as plain text)
curl https://api.onebrain.rocks/v1/connect/ob_your_api_key_here \
  -H "Accept: text/plain"

# Read with specific scope (brief, assistant, project, deep)
curl "https://api.onebrain.rocks/v1/connect/ob_your_api_key_here?scope=assistant" \
  -H "Accept: text/plain"

# Read as JSON (includes metadata and token estimate)
curl "https://api.onebrain.rocks/v1/connect/ob_your_api_key_here?scope=deep" \
  -H "Accept: application/json"

# Write back a new memory
curl -X POST https://api.onebrain.rocks/v1/connect/ob_your_api_key_here/memory \
  -H "Content-Type: application/json" \
  -d '{
    "type": "decision",
    "title": "Switched from REST to GraphQL for the mobile app",
    "body": "After evaluating both options, decided GraphQL reduces over-fetching on mobile and simplifies the data layer. REST remains for public API."
  }'

Connect API Reference

GET /v1/connect/:apiKey

Reads the user's brain context as an AI-ready system prompt.

ParameterLocationTypeDefaultDescription
apiKeypathstring—Full API key (ob_prefix_secret)
scopequerystringdeepToken budget: brief (500), assistant (2K), project (3K), deep (8K)
Acceptheaderstringtext/plaintext/plain for raw prompt, application/json for structured response

Scopes required: connect.read

Rate limit: 30 requests/minute per API key prefix

Response (plain text): Full system prompt with Sync Protocol v1 instructions, user context, and write-back URL.

Response (JSON):

{
  "data": {
    "systemPrompt": "# OneBrain Sync Protocol v1\n...",
    "meta": {
      "tokenEstimate": 4200,
      "scope": "deep",
      "writeBackEnabled": true,
      "generatedAt": "2026-03-21T10:30:00Z"
    }
  },
  "meta": { "requestId": "req-abc123" }
}

POST /v1/connect/:apiKey/memory

Writes a new memory back to OneBrain from an AI conversation.

ParameterLocationTypeRequiredDescription
apiKeypathstringYesFull API key (ob_prefix_secret)
typebodystringYesOne of: fact, preference, decision, goal, experience, skill
titlebodystringYesShort summary (1-500 chars)
bodybodystringYesFull detail (1-10,000 chars)
sourceTypebodystringNoDefault: ai_extraction. One of: user_input, system_inference, ai_extraction, user_confirmed
confidencebodynumberNoDefault: 0.7. Range: 0.0-1.0
metadatabodyobjectNoArbitrary key-value metadata

Scopes required: connect.write

Rate limit: 10 requests/minute per API key prefix

Response (201 Created): The created memory object. Status is candidate (review trust) or active (trusted).

Response (200 OK): If a duplicate memory already exists, returns the existing memory without creating a new one.

PATCH /v1/api-keys/:id/trust

Updates the trust level for an API key. Requires JWT authentication (not API key auth).

ParameterLocationTypeRequiredDescription
idpathstringYesAPI key ID
trustLevelbodystringYesreview or trusted

Auth: JWT (cookie-based, requires logged-in user)

Response (200 OK): Updated API key object.

Security Considerations

  • Connect URLs contain the full API key — treat them as secrets, never share publicly
  • All connect endpoints enforce Cache-Control: no-store and Referrer-Policy: no-referrer
  • API keys are hashed with SHA-256 in the database; only the prefix is stored in plaintext
  • Rate limits are enforced per API key prefix (30/min read, 10/min write)
  • Write-back URLs are only included in the system prompt when the key has connect.write scope
  • The protocol never instructs the AI to share context with other users or expose the write-back URL

For AI Agents

OneBrain is built for autonomous AI agents. Any agent that can make HTTP requests can read a user's brain context and write back new learnings — no browser, no UI, no human interaction required.

Why Agents Should Use OneBrain

Without OneBrainWith OneBrain
Each agent starts from zeroEvery agent has full user context from the first message
Knowledge dies when the session endsLearnings persist and sync across all agents
User repeats preferences to every toolPreferences, skills, and decisions are shared automatically
Agents can't coordinateAgents read each other's learnings via shared memory

Agent Quick Start (5 Minutes)

# 1. Create account + API key (one-time setup, see "Automated Account Provisioning" below)
# 2. Read brain context
CONTEXT=$(curl -s "https://onebrain.rocks/api/eu/v1/connect" \
  -H "Authorization: ApiKey ob_your_key" \
  -H "Accept: text/plain")

# 3. Use $CONTEXT as system prompt for your agent

# 4. Write back learnings
curl -s -X POST "https://onebrain.rocks/api/eu/v1/connect/memory" \
  -H "Authorization: ApiKey ob_your_key" \
  -H "Content-Type: application/json" \
  -d '{"type":"decision","title":"Switched to PostgreSQL","body":"Team decided to migrate from MySQL to PostgreSQL for better JSON support."}'

# 5. Delta sync (only changes since last check)
curl -s "https://onebrain.rocks/api/eu/v1/connect/delta?since=2026-04-01T00:00:00Z" \
  -H "Authorization: ApiKey ob_your_key"

Authentication for Agents

Agents authenticate exclusively via API keys. No password, no 2FA, no browser session required.

MethodHeaderUse Case
Header auth (recommended)Authorization: ApiKey ob_prefix_secretAll agents
URL path (legacy)GET /v1/connect/ob_prefix_secretSimple integrations

API keys bypass 2FA by design — they are pre-authorized machine credentials with scoped permissions and rate limits.

Integration Examples

Python Agent

import requests

API_KEY = "ob_your_key"
BASE = "https://onebrain.rocks/api/eu"

# Read context
ctx = requests.get(f"{BASE}/v1/connect",
    headers={"Authorization": f"ApiKey {API_KEY}", "Accept": "text/plain"}).text

# Write memory
requests.post(f"{BASE}/v1/connect/memory",
    headers={"Authorization": f"ApiKey {API_KEY}"},
    json={"type": "fact", "title": "User speaks German", "body": "Primary language is German, prefers German UI."})

LangChain / CrewAI

from onebrain import OneBrain

ob = OneBrain(api_key="ob_your_key", base_url="https://onebrain.rocks/api/eu")
context = ob.get_context(scope="assistant")

# Use as system prompt
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o")
llm.invoke([{"role": "system", "content": context}, {"role": "user", "content": "..."}])

Node.js / TypeScript Agent

import OneBrain from 'onebrain';

const ob = new OneBrain({ apiKey: 'ob_your_key', baseUrl: 'https://onebrain.rocks/api/eu' });
const { context } = await ob.getContext({ scope: 'deep' });

// Write back
await ob.writeMemory({
  type: 'goal',
  title: 'Launch MVP by Q3',
  body: 'User wants to ship the MVP before July.',
});

Context Scopes

Choose the right scope based on your agent's token budget:

ScopeTokensBest For
brief~500Quick lookups, chatbots with small context windows
assistant~2,000General assistants, daily interactions
project~3,000Project-focused agents, includes active project details
deep~8,000Full context — identity, all memories, entities, projects

Multi-Agent Architecture

Multiple agents can share the same user's brain by using separate API keys:

Agent A (Claude Code)  ──→  API Key 1 (connect.read + connect.write)  ──→  OneBrain
Agent B (ChatGPT)      ──→  API Key 2 (connect.read + connect.write)  ──→  (shared brain)
Agent C (Cron job)     ──→  API Key 3 (connect.read only)             ──→

Each agent reads the latest context (including memories written by other agents) and writes back its own learnings. The merge engine handles deduplication and conflict resolution automatically.

Rate Limits for Agents

OperationLimitKey
Read context30/minPer API key prefix
Write memory10/minPer API key prefix
Write batch10/minPer API key prefix
Delta sync30/minPer API key prefix

Agent Registration (3 Ways)

Agents can get an API key via three methods — no UI or human interaction required:

Option 1: Self-Registration (No Auth Required)

The simplest way. Any agent can register itself:

curl -s -X POST "https://onebrain.rocks/api/eu/v1/agents/register" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-agent",
    "description": "A coding assistant that remembers project context"
  }'

Returns a read-only API key (scopes: connect.read, brain.read, entity.read). Rate limited to 5/hour per IP.

Option 2: Invite Link (Admin-Controlled)

Admins create invite links with configurable access levels:

# Agent registers with an invite code
curl -s -X POST "https://onebrain.rocks/api/eu/v1/invite/register" \
  -H "Content-Type: application/json" \
  -d '{
    "code": "partner-2026",
    "name": "my-agent",
    "description": "A coding assistant that remembers project context"
  }'

Invite links support:

  • Access level: read (read-only) or readwrite (full access)
  • Max uses: Limit how many agents can register per link
  • Expiration: Auto-expire after N days
  • Global toggle: Disable all invite registration with one switch
  • Per-link toggle: Activate/deactivate individual links

Agents can also register via the web UI at https://onebrain.rocks/invite/<code>.

Option 3: Automated Provisioning (Admin Key Required)

For automated pipelines where you control the provisioning key:

Prerequisites: Set AGENT_PROVISIONING_KEY in your .env. The endpoint is disabled when the key is empty.

# Generate a provisioning key
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

# Provision an agent (one request = account + API key)
curl -s -X POST "https://onebrain.rocks/api/eu/v1/agent-provision" \
  -H "Authorization: Bearer <AGENT_PROVISIONING_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-coding-agent",
    "scopes": ["connect.read", "connect.write"],
    "expiresInDays": 90
  }'

Response (201 Created):

{
  "data": {
    "agentId": "uuid",
    "email": "agent-uuid@agents.onebrain.local",
    "name": "my-coding-agent",
    "apiKey": {
      "prefix": "ob_a1b2c3d4",
      "fullKey": "ob_a1b2c3d4_secret...",
      "scopes": ["connect.read", "connect.write"],
      "expiresAt": "2026-06-30T00:00:00.000Z"
    },
    "createdAt": "2026-04-01T12:00:00.000Z"
  }
}

Available agent scopes: connect.read, connect.write, brain.read, entity.read, entity.write, memory.extract.write

Rate limit: 10 requests/hour per IP.

Security:

  • Provisioning key is verified with timing-safe comparison
  • Agent accounts are marked as accountType: agent in the database
  • API keys have standard expiration and can be revoked via the dashboard
  • The fullKey is returned only once — store it securely

For Teams

Current Team Features

Organizations allow grouping users and managing membership:

# Create organization
curl -X POST "https://onebrain.rocks/api/eu/v1/orgs" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme Engineering", "description": "Backend team"}'

# Add member
curl -X POST "https://onebrain.rocks/api/eu/v1/orgs/:orgId/members" \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"userId": "user-uuid", "role": "member"}'

# List members
curl "https://onebrain.rocks/api/eu/v1/orgs/:orgId/members" \
  -H "Authorization: Bearer <access_token>"

Team Architecture

Each team member has their own brain with private memories, entities, and projects. Organization membership is currently metadata-only — there is no cross-user memory sharing.

FeatureStatus
Create/manage organizationsAvailable
Add/remove members with rolesAvailable
Individual brain per memberAvailable
Shared team brainPlanned
Org-level API keysPlanned
Cross-user memory accessPlanned

Team + Agent Workflow

Teams can use OneBrain with agents today by giving each team member their own API key:

Team Member A  ──→  API Key A  ──→  Brain A  ──→  Agent (reads A's context)
Team Member B  ──→  API Key B  ──→  Brain B  ──→  Agent (reads B's context)

Each member's agent has full access to that member's personal brain. Shared team context is on the roadmap.


Merge Engine

The deterministic merge engine consolidates memory without any ML or embeddings:

  1. Duplicate detection — same type + similar title (Dice coefficient) + similar body
  2. Conflict detection — same type + similar topic + contradictory body
  3. Confidence scoring — base by source type, boost on agreement, decrease on conflict
  4. Priority hierarchy — user_confirmed > user_input > system_inference > ai_extraction
  5. Brain versioning — snapshot of canonical state + merge log after each cycle

All merge actions include an explainability log (action, memoryIds, reason).


Monetization

Plans, limits, and features are fully database-driven — editable via Admin UI without code changes.

Default free plan:

LimitValue
Context calls100/month
Memory writes50/month
Extract calls20/month

Note on Stripe / Billing:

OneBrain was originally designed as a SaaS product with paid plans. The full Stripe integration was built (checkout, customer portal, webhooks, subscription lifecycle, prorated upgrades/downgrades) before the project pivoted to open source. The billing code remains in the codebase and is fully functional, but is not actively used. Billing routes are only registered when STRIPE_SECRET_KEY is set — without it, all users get the free plan with no payment required. If you fork OneBrain for a commercial product, the Stripe integration is ready to use.


GDPR/DSGVO Compliance

OneBrain is built for the EU market with full DSGVO compliance:

FeatureImplementation
Cookie Consent3-category banner (necessary, statistics, marketing), stored with timestamp + version
Data ExportGET /v1/user/export — 14 categories (profile, memories, entities, projects, sessions, usage, consents...)
Account DeletionDELETE /v1/user — soft delete with 30-day grace period, then hard delete via retention job
Data MinimizationOnly email required for auth, everything else optional
PII MaskingEmails and IPs masked in all log output
Retention AutomationSessions 30d, magic links 24h, usage events 24mo, audit logs 90d, deleted users 30d
Legal PagesImpressum, Datenschutz, AGB — available in DE/EN/ES
Region IsolationEU data stays in EU, GLOBAL data stays in GLOBAL — no cross-region access
Consent AuditAll consents stored with IP hash, timestamp, and version for regulatory proof

See DSGVO-REPORT.md for the full compliance report.


Security

MeasureStatus
Helmet.js security headers (CSP, HSTS, X-Frame-Options DENY)Active
httpOnly cookies for tokens (no localStorage)Active
CSRF protection via X-Requested-With headerActive
Rate limiting: auth 5/min, writes 30/min, global 600/minActive
CORS: explicit origins only, no wildcardActive
SSRF protection on URL ingestion (DNS resolution + private IP blocking)Active
API key hashing (SHA-256, prefix-based)Active
Admin role enforcement middlewareActive
PII masking in all logsActive
Persistent audit logging to databaseActive
Docker: non-root user (UID 1001), memory limitsActive
Input validation on all endpoints (Zod)Active
Parameterized queries only (Prisma ORM)Active
Webhook signature verification (Stripe)Active
File upload validation (type, size, 10MB limit)Active

Web Application

Pages (28 routes)

Public:

  • / — Landing page
  • /login — Authentication
  • /pricing — Plan comparison
  • /auth/verify — Magic link verification
  • /impressum — Legal notice
  • /datenschutz — Privacy policy
  • /agb — Terms of service

Dashboard:

  • /dashboard — Overview with stats and recent memories
  • /dashboard/brain — Brain profile management
  • /dashboard/memory — Memory list with filters and pagination
  • /dashboard/entities — Entity management
  • /dashboard/projects — Project management
  • /dashboard/sessions — Active session management
  • /dashboard/ingest — URL/file ingestion
  • /dashboard/integrations — Integration settings
  • /dashboard/api-keys — API key management
  • /dashboard/billing — Subscription and billing
  • /dashboard/usage — Usage analytics
  • /dashboard/referrals — Referral system
  • /dashboard/shares — Shared brain snapshots
  • /dashboard/agents — Connected agents overview
  • /dashboard/agents/[id] — Agent detail (config, activity, candidates)
  • /dashboard/onboarding — First-time user onboarding

Admin:

  • /dashboard/admin — Admin dashboard
  • /dashboard/admin/users — User management
  • /dashboard/admin/audit — Audit log viewer
  • /dashboard/admin/plans — Plan management
  • /dashboard/admin/plans/[id] — Plan detail editor

Features

  • PWA: installable app with service worker, offline caching, standalone mode
  • Responsive: mobile-first with 768px breakpoint
  • Keyboard shortcuts: navigation shortcuts for power users
  • i18n: language switcher (DE/EN/ES) with localStorage persistence
  • RTL support: right-to-left layout via RtlProvider
  • Cookie consent: GDPR banner with 3 categories
  • Dark theme: #0f0f23 base, consistent dark palette

Docker Deployment

Build & Run

# Build all images
docker compose -f infra/region-eu/docker-compose.yml build
docker compose -f infra/control-plane/docker-compose.yml build

# Start EU region (API + PostgreSQL + Redis + MCP + migrations)
docker compose -f infra/region-eu/docker-compose.yml up -d

# Start control plane (Caddy reverse proxy + Web)
docker compose -f infra/control-plane/docker-compose.yml up -d

# Optional: Start GLOBAL region
docker compose -f infra/region-global/docker-compose.yml up -d

Container Architecture

ServiceImageMemory LimitHealth Check
postgrespostgres:16-alpine1Gpg_isready every 10s
redisredis:7-alpine512Mredis-cli ping every 10s
apicustom (node:22-alpine)512Mwget /health every 30s
webcustom (node:22-alpine)256Mwget / every 30s
mcpcustom (node:22-alpine)—depends on api
caddycaddy:2-alpine—wget :80 every 30s
migratesame as api—runs once, then exits

All custom images use multi-stage builds with non-root user (UID 1001).

Caddy Reverse Proxy

  • Auto-HTTPS via Let's Encrypt
  • Region-based API routing (/api/eu/* → EU API, /api/global/* → GLOBAL API)
  • Security headers (HSTS, X-Frame-Options, noSniff)
  • gzip + zstd compression
  • Server header stripped

CI/CD

GitHub Actions

ci.yml — runs on every push and PR:

  • Install dependencies (pnpm)
  • Type checking (all workspaces)
  • Linting (ESLint)
  • Tests (Vitest, 365 tests)
  • Build verification

deploy.yml — blue-green deployment to Hetzner VPS:

  • Build Docker images
  • Push to registry
  • Deploy with zero-downtime swap
  • Health check verification
  • Automatic rollback on failure

Database

Schema Overview

31 models across 4 domains:

DomainModels
AuthUser, Session, MagicLinkToken, ApiKey, AgentActivity
BrainBrainProfile, MemoryItem, Entity, EntityLink, Project, ProjectMemoryLink, BrainVersion, SourceEvent, Tag, MemoryTag
LearningDailyQuestion
MonetizationPlan, PlanLimit, PlanFeature, UserPlan, UsageEvent, Subscription
GrowthReferral, BrainShare
ComplianceAuditLog, Consent
SettingsNotificationPreference, FileUpload

8 enums: Region, Locale, MemoryType, MemoryStatus, SourceType, ProjectStatus, UserRole, SubscriptionStatus

All tables have createdAt + updatedAt with DB-level defaults. UUIDs for primary keys. Cascading deletes on user relationships.

Migrations

# Apply migrations
DATABASE_URL="..." pnpm --filter @onebrain/db exec prisma migrate deploy

# Generate client after schema changes
pnpm --filter @onebrain/db exec prisma generate

Testing

# Run all 365 tests (23 test files)
pnpm --filter @onebrain/api exec vitest run

# Run specific suite
pnpm --filter @onebrain/api exec vitest run src/__tests__/context-engine.test.ts

# Watch mode
pnpm --filter @onebrain/api exec vitest

# With coverage
pnpm --filter @onebrain/api exec vitest run --coverage

Test Suites

SuiteTestsCategory
Tokens9Unit
Response helpers5Unit
Audit logging4Unit
Text normalization9Unit
String similarity11Unit
Merge engine18Unit
API keys14Unit
Daily questions11Unit
Context engine40Unit
Monetization13Unit
Viral & growth15Unit
GDPR service12Unit
Stripe service8Unit
Security (SSRF, headers)10Unit
PII masking6Unit
i18n pluralization4Unit
Auth integration14Integration
Memory integration14Integration
Billing integration21Integration
Agent activity integration24Integration
Admin GDPR integration29Integration
Core features integration46Integration

Environment Variables

Required

VariableDescription
DATABASE_URLPostgreSQL connection string
JWT_SECRETJWT signing secret (min 32 chars)
CORS_ORIGINAllowed CORS origin

API Server

VariableDefaultDescription
API_PORT3001API server port
API_HOST0.0.0.0API bind address
NODE_ENVdevelopmentEnvironment mode
JWT_EXPIRY15mAccess token lifetime
REFRESH_TOKEN_EXPIRY7dRefresh token lifetime
MAGIC_LINK_EXPIRY15mMagic link lifetime
REDIS_URLredis://localhost:6379Redis connection string

Email

VariableDefaultDescription
SMTP_HOSTlocalhostMail server
SMTP_PORT1025Mail server port
SMTP_USER—SMTP username
SMTP_PASS—SMTP password
SMTP_FROMnoreply@onebrain.rocksSender address

Web App

VariableDefaultDescription
NEXT_PUBLIC_API_URLhttp://localhost:3001API URL for frontend
NEXT_PUBLIC_DEMO_MODEfalseEnable demo features

OAuth (Optional)

VariableDescription
NEXT_PUBLIC_GOOGLE_CLIENT_IDGoogle OAuth client ID
NEXT_PUBLIC_APPLE_CLIENT_IDApple OAuth client ID
NEXT_PUBLIC_GITHUB_CLIENT_IDGitHub OAuth client ID (frontend redirect)
GITHUB_CLIENT_IDGitHub OAuth client ID (backend code exchange)
GITHUB_CLIENT_SECRETGitHub OAuth client secret

Stripe (Optional — legacy SaaS, not active)

VariableDescription
STRIPE_SECRET_KEYStripe API secret key
STRIPE_WEBHOOK_SECRETStripe webhook signing secret
STRIPE_PUBLISHABLE_KEYStripe public key for frontend

MCP Server

VariableDefaultDescription
ONEBRAIN_API_URLhttp://localhost:3001API URL for MCP
ONEBRAIN_API_KEY—API key for MCP auth

Development Commands

pnpm install            # Install all dependencies
pnpm dev                # Start all apps (Turborepo)
pnpm build              # Build everything
pnpm typecheck          # Type-check all workspaces
pnpm lint               # Lint all code (ESLint)
pnpm format             # Format with Prettier
pnpm format:check       # Check formatting
pnpm clean              # Remove all build artifacts

Version History

See CHANGELOG.md for the full version history.

Current: v1.8.0 — 470+ features, 365 tests, 31 database models.


Links

ResourceURL
Websiteonebrain.rocks
SDK (npm)onebrain
SDK Sourceonebrainaimemory/onebrainagentsdk
MCP Serveronebrain-mcp
Main Repoonebrainaimemory/onebrain

License

AGPL-3.0 — Copyright 2026 OneBrain


Made with ❤️ with OneBrain

↑↓ navigate openesc close