Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
a47324c
[repo] Add local GSD layer pointer and harden gitignore
alanshurafa Apr 18, 2026
28a3dc5
Merge remote-tracking branch 'origin/main'
alanshurafa Apr 18, 2026
221ad58
[integrations] Entity extraction worker
alanshurafa Apr 6, 2026
62ced45
fix: prevent dry_run queue mutation and harden claim/retry logic
alanshurafa Apr 6, 2026
1bff2c4
[integrations] Fix REVIEW-BLOCKER-1: type thought_id as UUID string
alanshurafa Apr 18, 2026
4bdf879
[integrations] Fix REVIEW-BLOCKER-3: cap entity extraction LLM calls
alanshurafa Apr 18, 2026
1bdec99
[schemas] Entity extraction tables and extraction trigger
alanshurafa Apr 6, 2026
37d096a
fix: align thought_id and survivor/loser_id types with UUID primary key
alanshurafa Apr 6, 2026
c54973b
[schemas] Fix REVIEW-BLOCKER-1: remove BIGSERIAL row from ob-graph co…
alanshurafa Apr 18, 2026
a7d47cb
[schemas] Fix REVIEW-BLOCKER-2+HIGH-4: drop anon GRANTs, enable RLS, …
alanshurafa Apr 18, 2026
47ad840
[schemas] Fix REVIEW-HIGH-1+INFO-1: guard trigger prereq and rename h…
alanshurafa Apr 18, 2026
4416fb8
[schemas] Fix REVIEW-HIGH-3: document queue and log retention
alanshurafa Apr 18, 2026
ac81844
[schemas] Fix REVIEW-INFO-2: declare rls primitive dependency
alanshurafa Apr 18, 2026
fc5bd0a
[integrations] Fix REVIEW-BLOCKER-4: add fetch timeout on LLM calls
alanshurafa Apr 18, 2026
974ed44
[integrations] Fix REVIEW-BLOCKER-5: harden prompt against injection
alanshurafa Apr 18, 2026
bd71658
[integrations] Fix REVIEW-WARNING-2: wall-clock budget in main loop
alanshurafa Apr 18, 2026
1fb6bb8
[integrations] Fix REVIEW-WARNING-3: clear stale links on re-extraction
alanshurafa Apr 18, 2026
322ba57
[integrations] Fix REVIEW-INFO-1: document caps and queue statuses
alanshurafa Apr 18, 2026
43a948c
[recipes] Entity wiki pages from knowledge graph
alanshurafa Apr 18, 2026
da9bb33
[schemas] Typed reasoning edges with temporal validity
alanshurafa Apr 18, 2026
7a02804
[recipes] Typed edge classifier — Opus/Haiku hybrid
alanshurafa Apr 18, 2026
e9788ae
[recipes] Fix REVIEW-CODEX-P1-2: write embedding in thought output mode
alanshurafa Apr 18, 2026
14804b0
[recipes] Fix REVIEW-CODEX-P1-1: warn prominently about entity-extrac…
alanshurafa Apr 18, 2026
78004a0
[schemas] Fix REVIEW-CODEX-P1-1: thought_edges RLS service-role-only
alanshurafa Apr 18, 2026
58f2973
[recipes] Fix WR-01: prompt-injection fencing on thought content
alanshurafa Apr 18, 2026
ac45d50
[recipes] Fix REVIEW-CODEX-P1-2: map-based thought lookup, no destruc…
alanshurafa Apr 18, 2026
1dd87c4
[recipes] Fix WR-06: preflight embedding dimension for semantic-expand
alanshurafa Apr 18, 2026
782ccb0
[recipes] Fix CRIT-1: hard cost cap under parallelism
alanshurafa Apr 18, 2026
8221232
[recipes] Fix REVIEW-CODEX-P2/P3: remove alias matching claim and dea…
alanshurafa Apr 18, 2026
0d811b7
[recipes] Fix CRIT-2: mirror-supersedes preflight + doc non-atomicity
alanshurafa Apr 18, 2026
dd6bfcf
[schemas] Fix REVIEW-CODEX-P2-3: ON CONFLICT upsert for support_count…
alanshurafa Apr 18, 2026
906b475
[recipes] Fix REVIEW-CODEX-P2-4: skip_already_classified excludes rel…
alanshurafa Apr 18, 2026
20d7e75
[recipes] Fix WARN-5: exponential backoff on 429/5xx
alanshurafa Apr 18, 2026
59b9c05
[recipes] Fix WARN-1: pricing-unknown warning and cost-cap refusal
alanshurafa Apr 18, 2026
568cb6b
[recipes] Fix REVIEW-CODEX-2-P1: delete information_schema preflight;…
alanshurafa Apr 18, 2026
d92bd25
[recipes] Fix REVIEW-CODEX-2-P1: thought-mode embedding is mandatory …
alanshurafa Apr 18, 2026
159e221
[recipes] Fix REVIEW-CODEX-2-P2: correct PR tracking URLs to NateBJon…
alanshurafa Apr 18, 2026
6c7f469
[recipes] Fix REVIEW-CODEX-2-P2: budget hybrid Haiku cost in worstCas…
alanshurafa Apr 18, 2026
aae3d62
[recipes] Fix REVIEW-CODEX-2-P3: README reconciliation describes upse…
alanshurafa Apr 18, 2026
53db43a
[recipes] Fix REVIEW-CODEX-2-P2: numeric disambiguator for slugify co…
alanshurafa Apr 18, 2026
7d9d69b
[recipes] Fix REVIEW-CODEX-3-P1: drop false mirror-recovery claim in …
alanshurafa Apr 18, 2026
c0d9f75
[docs] Fix REVIEW-CODEX-3-P1: document manual mirror repair SQL in RE…
alanshurafa Apr 18, 2026
93da3b8
[recipes] Fix REVIEW-CODEX-4-P1: flip runtime mirror direction to mat…
alanshurafa Apr 18, 2026
9ebafc7
[docs] Enhanced repair SQL clears backwards writes from pre-fix installs
alanshurafa Apr 18, 2026
27338a0
[schemas] Fix CI Rule 13: convert broken relative links to external P…
alanshurafa Apr 18, 2026
a2eed12
[docs] Fix pre-existing markdownlint errors across 7 files
alanshurafa Apr 19, 2026
181f48e
[recipes] Add wiki-synthesis — synthesize wiki pages + autobiography …
alanshurafa Apr 21, 2026
6094928
[recipes] Fix REVIEW-CODEX-P0-1: harden autobiography prompt vs injec…
alanshurafa Apr 21, 2026
ffcb184
[recipes] Fix REVIEW-CODEX-P0-2: harden gmail-wiki prompt vs injection
alanshurafa Apr 21, 2026
30088dc
[recipes] Fix REVIEW-CODEX-P1-1: narrow server-action spawn env + val…
alanshurafa Apr 21, 2026
b892e1f
[recipes] Fix REVIEW-CODEX-P1-{2,3} + P2: encode id, catch safety, na…
alanshurafa Apr 21, 2026
f9b09bb
[recipes] Fix REVIEW-CODEX-P2: YAML escape subject + clarify schema p…
alanshurafa Apr 21, 2026
5d3be1e
Merge pull request #215 from alanshurafa/contrib/alanshurafa/markdown…
justfinethanku Apr 21, 2026
e4165d1
Merge pull request #197 from alanshurafa/contrib/alanshurafa/entity-e…
justfinethanku Apr 21, 2026
2943323
Merge pull request #199 from alanshurafa/contrib/alanshurafa/entity-e…
justfinethanku Apr 21, 2026
1321674
Merge pull request #208 from alanshurafa/contrib/alanshurafa/typed-re…
justfinethanku Apr 21, 2026
d0b0dd5
Merge pull request #213 from alanshurafa/contrib/alanshurafa/entity-wiki
justfinethanku Apr 21, 2026
2507c13
Merge pull request #222 from alanshurafa/contrib/alanshurafa/wiki-syn…
justfinethanku Apr 21, 2026
e06aa9d
[recipes] Add wiki compiler orchestration recipe
justfinethanku Apr 21, 2026
7bbc37e
Merge pull request #223 from NateBJones-Projects/codex/wiki-compiler
justfinethanku Apr 21, 2026
6eb0380
Improve ChatGPT MCP compatibility
justfinethanku May 3, 2026
5cc75e7
Fix markdown lint blockers
justfinethanku May 3, 2026
42ccebd
Merge pull request #259 from NateBJones-Projects/codex/chatgpt-mcp-co…
justfinethanku May 3, 2026
e046453
Add OB1 Agent Memory OpenClaw launch scaffold
justfinethanku May 3, 2026
712262e
Harden OpenClaw agent memory plugin install
justfinethanku May 3, 2026
27a9196
Wire OpenClaw agent memory secret refs
justfinethanku May 3, 2026
f71ce1d
Add agent memory smoke harnesses
justfinethanku May 3, 2026
82d0aa9
Add agent memory governance dashboard
justfinethanku May 3, 2026
07e8a3d
Polish agent memory dashboard visuals
justfinethanku May 4, 2026
b04e23a
Prepare NBJ OB1 Agent Memory ClawHub launch
justfinethanku May 4, 2026
4f98654
Document Nate ClawHub publisher requirement
justfinethanku May 4, 2026
c0ca493
Compile NBJ OpenClaw plugin for ClawHub
justfinethanku May 4, 2026
9c79225
Document ClawHub skill publish
justfinethanku May 4, 2026
cc0e128
Close out Agent Memory Phase 1 docs
justfinethanku May 4, 2026
0228285
Add NBJ dashboard walkthrough and demo gateway
justfinethanku May 4, 2026
5be93f7
Prepare Agent Memory launch docs and video source
justfinethanku May 7, 2026
151a8d1
Merge remote-tracking branch 'origin/main' into codex/nat-833-agent-m…
justfinethanku May 7, 2026
8f8c8d6
[recipes] Add atomizer — generic + Gmail re-atomization toolkit
alanshurafa Apr 21, 2026
df168ae
[recipes] Fix REVIEW-SEC-P0-1: remove codex provider sandbox bypass
alanshurafa Apr 21, 2026
4a519ed
[recipes] Fix REVIEW-P1-CODEX+CLAUDE: env loader + idempotency + reda…
alanshurafa Apr 21, 2026
4ae7785
[recipes] Fix REVIEW-P1-P2: script-relative env, audit safety, re-ato…
alanshurafa Apr 21, 2026
1e11068
[recipes] Fix REVIEW-P1-P2: entity-resolver race + PII redaction
alanshurafa Apr 21, 2026
1d0dd5b
[recipes] Fix REVIEW-P1-P2: README security + .env.example template
alanshurafa Apr 21, 2026
4054eec
[recipes] Fix Round-2 REVIEW findings: race, CLI leak, default key, s…
alanshurafa Apr 21, 2026
00a2de4
[recipes] Fix MD028 in atomizer README
alanshurafa Apr 21, 2026
5212179
[docs] Fix pre-existing markdownlint errors across 8 files
alanshurafa Apr 22, 2026
4e29aae
[recipes] Keep atomizer dry runs read-only
justfinethanku May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@ node_modules/
.planning/
supabase/

# Maintainer-local overlays (not part of upstream contribution contract)
.local/
.agent/
.claude.json

# Python caches
__pycache__/
*.pyc

# Credentials & runtime state
.env
.env.local
Expand All @@ -14,3 +23,7 @@ sync-log.json

# Build artifacts
deno.lock
docs/walkthroughs/*/public/
docs/assets/agent-memory/promotional/generated-backgrounds/**/result.json
docs/assets/agent-memory/screenshots/**/.chrome-*/
integrations/openclaw-agent-memory/dist/
20 changes: 20 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# OB1 Agent Instructions

## Required Step: Update Linear

- For feature work tied to a Linear issue, update Linear at the start of the work, at meaningful checkpoints, and before handing back to the user.
- Use the parent issue as the living implementation log and keep child issues aligned with the files and behavior being changed.
- For the OB1 Agent Memory / OpenClaw launch work, the parent issue is `NAT-833`. Record architecture notes, implementation milestones, blockers, and verification results there.
- Do not wait until the end to document decisions. If a decision changes schema, API contract, trust policy, user-facing workflow, or publishing path, capture it in Linear while it is still fresh.

## Agent Memory Product Guardrails

- Keep `OB1 Agent Memory` runtime-neutral. OpenClaw is the flagship launch runtime, not the product boundary.
- Treat inferred or generated memory as evidence by default. Instruction-grade memory requires human confirmation or trusted import.
- Avoid raw transcript, model reasoning trace, secret, and large-code-block storage by default.
- Avoid profanity in all content. Keep docs, examples, seed data, UI copy, prompts, walkthroughs, and generated assets clean and professional.
- Prefer diagram-first documentation for this work: diagram, short explanation, copy-paste setup, then deeper reference.
- Carry Nate B. Jones / OB1 provenance through product surfaces, docs, diagrams, screenshots, and starter seed data. Keep it subtle and useful: micro-branding, source labels, logo marks, and provenance language instead of loud marketing copy.
- Treat public OB1 assets as helpful-first audience growth for Nate Jones. Every public guide, recipe, tutorial, package page, release note, and walkthrough should point back to Nate's Substack and site in a natural way: https://substack.com/@natesnewsletter and https://natebjones.com.
- Make the case by being genuinely useful. The CTA should feel earned: "Nate gives away practical systems like this" rather than generic marketing copy.
- For ClawHub/OpenClaw publishing, do not fall back to Jonathan's personal handle or any non-Nate namespace. If `@natebjones` / Nate OB1 ownership is not available, stop and record the blocker.
10 changes: 10 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ Every contribution lives in its own subfolder under the right category and must
- **No credentials, API keys, or secrets in any file.** Use environment variables.
- **No binary blobs** over 1MB. No `.exe`, `.dmg`, `.zip`, `.tar.gz`.
- **No `DROP TABLE`, `DROP DATABASE`, `TRUNCATE`, or unqualified `DELETE FROM`** in SQL files.
- **Avoid profanity in all content.** Keep docs, examples, seed data, UI copy, prompts, walkthroughs, and generated assets clean and professional.
- **MCP servers must be remote (Supabase Edge Functions), not local.** Never use `claude_desktop_config.json`, `StdioServerTransport`, or local Node.js servers. All extensions deploy as Edge Functions and connect via Claude Desktop's custom connectors UI (Settings → Connectors → Add custom connector → paste URL). See `docs/01-getting-started.md` Step 7 for the pattern.

## PR Standards
Expand All @@ -47,3 +48,12 @@ Every contribution lives in its own subfolder under the right category and must
- `.github/metadata.schema.json` — JSON schema for metadata.json validation
- `.github/PULL_REQUEST_TEMPLATE.md` — PR description template
- `LICENSE.md` — FSL-1.1-MIT terms

## Local GSD Execution Layer

This repo also has a maintainer-local GSD layer in `.planning/`.

- If `.planning/` exists, use it for local brownfield planning and phased execution.
- Start with `.planning/STATE.md`, then read `.planning/PROJECT.md`, `.planning/ROADMAP.md`, and the relevant `.planning/codebase/*.md` documents.
- Keep `.planning/` local. It is gitignored intentionally and is not part of the public contribution contract or upstream PR scope.
- Public contributor rules still come from `CLAUDE.md`, `AGENTS.md`, `CONTRIBUTING.md`, and the committed repo files.
2 changes: 2 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ grant select, insert, update, delete on table public.your_table to service_role;
- **"Cross-Extension Integration"** prominently documenting connections to other extensions
- **"Next Steps"** linking to the next extension
- **Tool audit link** — Any extension or integration that exposes MCP tools must link to the [MCP Tool Audit & Optimization Guide](docs/05-tool-audit.md) in its "Next Steps" or closing section. This helps users manage their tool surface area as they add extensions. The link is checked by the automated review.
- **MCP tool annotations** — Any extension or integration that exposes MCP tools must mark read-only tools with `annotations: { readOnlyHint: true }` and write tools with `annotations: { readOnlyHint: false, openWorldHint: false, destructiveHint: false }` unless the tool really can touch arbitrary external resources or destroy data. ChatGPT uses this metadata to distinguish read tools from write actions.
- **Remote MCP setup** — MCP servers must be deployed as Supabase Edge Functions and connected via custom connectors (URL-based). Do NOT use local Node.js servers or `claude_desktop_config.json`. See the [extension template](extensions/_template/) for the correct pattern.

**Primitives** additionally require:
Expand Down Expand Up @@ -298,3 +299,4 @@ Every PR is checked against these rules. All must pass before human review.
13. **Internal links** — All relative links in READMEs resolve to existing files
14. **Remote MCP pattern** — Extensions and integrations must use remote MCP via Supabase Edge Functions. No `claude_desktop_config.json`, no local Node.js stdio servers. See the [Getting Started guide](docs/01-getting-started.md) for the correct pattern
15. **Tool audit link** — Extensions and integrations must link to the [MCP Tool Audit & Optimization Guide](docs/05-tool-audit.md) in their README. This ensures users are aware of tool surface area management as they add capabilities
16. **MCP tool annotations** — Read-only tools include `readOnlyHint: true`; write tools include `readOnlyHint: false`, `openWorldHint`, and `destructiveHint`
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ Standalone capabilities that make your Open Brain smarter.
| [Work Operating Model Activation](recipes/work-operating-model-activation/) | Conversation-first workflow that turns tacit work patterns into structured Open Brain records and agent-ready operating files | [@jonathanedwards](https://github.com/jonathanedwards) |
| [World Model Diagnostic Activation](recipes/world-model-diagnostic-activation/) | Ship-now activation path for a 20-minute world-model readiness diagnostic that compounds through core Open Brain capture | [@jonathanedwards](https://github.com/jonathanedwards) |
| [Research-to-Decision Workflow](recipes/research-to-decision-workflow/) | Composition recipe that chains canonical skills into operator and investor research, synthesis, meeting, and memo workflows | [@NateBJones](https://github.com/NateBJones) |
| [OpenClaw Agent Memory for OB1](recipes/openclaw-agent-memory/) | Canonical recipe for using OB1 Agent Memory as the governed continuity layer for OpenClaw workflows | OB1 Team |
| [OpenClaw Code Review Memory](recipes/openclaw-code-review-memory/) | Flagship workflow for compounding repo-specific review lessons, maintainer corrections, and false positives | OB1 Team |
| [OpenClaw TaskFlow Work Log](recipes/openclaw-taskflow-work-log/) | Durable handoff recipe for long-running OpenClaw TaskFlows across agents, models, and channels | OB1 Team |

### [`/skills`](skills/) — Agent Skills

Expand All @@ -111,6 +114,7 @@ Plain-text skill packs you can drop into Claude Code, Codex, or other AI clients
| [Aiception Skill Pack (formerly Claudeception)](skills/claudeception/) | Extracts reusable lessons from work sessions into new skills | [@jaredirish](https://github.com/jaredirish) |
| [Work Operating Model Skill Pack](skills/work-operating-model/) | Runs a five-layer elicitation interview and saves the approved operating model into Open Brain | [@jonathanedwards](https://github.com/jonathanedwards) |
| [World Model Readiness Diagnostic](skills/world-model-diagnostic/) | Runs a 20-minute world-model diagnostic that maps paradigm fit, audits the boundary layer, and labels findings by confidence | [@jonathanedwards](https://github.com/jonathanedwards) |
| [OpenClaw Agent Memory Skill Pack](skills/openclaw-agent-memory/) | Teaches OpenClaw agents to recall, write back, report usage, and respect OB1 provenance/use-policy rules | OB1 Team |

### [`/dashboards`](dashboards/) — Frontend Templates

Expand All @@ -128,9 +132,19 @@ MCP server extensions, alternative deployment targets, and capture sources beyon
| Integration | What It Does | Contributor |
| ----------- | ------------ | ----------- |
| [Kubernetes Deployment](integrations/kubernetes-deployment/) | Fully self-hosted K8s deployment with PostgreSQL + pgvector — no Supabase required | [@velo](https://github.com/velo) |
| [Agent Memory API](integrations/agent-memory-api/) | Runtime-neutral recall, write-back, review, inspector, and recall-trace API for OB1 Agent Memory | OB1 Team |
| [OpenClaw Agent Memory](integrations/openclaw-agent-memory/) | OpenClaw plugin and publishing package for using OB1 Agent Memory from OpenClaw workflows | OB1 Team |
| [Slack Capture](integrations/slack-capture/) | Quick-capture thoughts via Slack messages with auto-embedding and classification | Core |
| [Discord Capture](integrations/discord-capture/) | Discord bot that captures messages into Open Brain, mirroring the Slack pattern | Core |

### [`/schemas`](schemas/) — Database Extensions

Tables and sidecars that extend the base `thoughts` model without replacing it.

| Schema | What It Does | Contributor |
| ------ | ------------ | ----------- |
| [Agent Memory](schemas/agent-memory/) | Provenance, review, use-policy, source-reference, relation, recall-trace, and audit sidecars for agent workflow memory | OB1 Team |

### [`/primitives`](primitives/) — Reusable Patterns

| Primitive | What It Does | Contributor |
Expand Down
18 changes: 18 additions & 0 deletions dashboards/open-brain-dashboard-next/.env.example
Original file line number Diff line number Diff line change
@@ -1,10 +1,28 @@
# Required: URL of your Open Brain REST API
NEXT_PUBLIC_API_URL=https://YOUR-PROJECT-REF.supabase.co/functions/v1/open-brain-rest

# Optional: URL of your OB1 Agent Memory API.
# If omitted, the dashboard derives it from NEXT_PUBLIC_API_URL by replacing open-brain-rest with agent-memory-api.
# AGENT_MEMORY_API_URL=https://YOUR-PROJECT-REF.supabase.co/functions/v1/agent-memory-api

# Optional: default Agent Memory scope for the dashboard governance views.
# AGENT_MEMORY_WORKSPACE_ID=ob1-staging
# AGENT_MEMORY_PROJECT_ID=

# Required: 32+ character secret for iron-session cookie encryption
# Generate with: openssl rand -hex 32
SESSION_SECRET=

# Optional: force HTTPS-only auth cookies. Leave unset for localhost previews.
# Set to true on HTTPS hosts if NEXT_PUBLIC_APP_URL/APP_URL is not configured.
# AUTH_COOKIE_SECURE=true

# Optional: local walkthrough/screenshot mode only.
# Bypasses login and uses this demo key against a local demo REST shim.
# Never enable this in a shared preview or production deployment.
# OB1_DEMO_AUTH_BYPASS=false
# OB1_DASHBOARD_DEMO_KEY=local-screenshot-key

# Optional: SHA-256 hash of passphrase to unlock restricted/sensitive content
# Requires the sensitivity-tiers primitive (sensitivity_tier column on thoughts)
# Generate with: echo -n "your-passphrase" | shasum -a 256
Expand Down
43 changes: 42 additions & 1 deletion dashboards/open-brain-dashboard-next/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,12 @@ Provides 9 pages for managing your thoughts:
| **Add to Brain** | Smart ingest with auto-routing — short text goes to single capture, long text to extraction with dry-run preview |
| **Audit** | Quality review for low-score thoughts with bulk delete |
| **Duplicates** | Semantic similarity detection with keep/delete/keep-both resolution |
| **Agent Memory** | Review queue, memory inspector, and recall trace debugging for OB1 Agent Memory |
| **Login** | API key authentication via encrypted session cookie |

## Prerequisites

- A working Open Brain setup with the **REST API gateway** (`open-brain-rest`) deployed
- A working Open Brain setup with the **REST API gateway** (`open-brain-rest`) deployed from [integrations/open-brain-rest](../../integrations/open-brain-rest/)
- **Node.js 18+** installed
- A **Vercel account** (free tier works) or any Node.js hosting

Expand All @@ -39,7 +40,13 @@ Provides 9 pages for managing your thoughts:
| Credential | Where to get it | Where it goes |
|------------|----------------|---------------|
| `NEXT_PUBLIC_API_URL` | Your Supabase project URL + `/functions/v1/open-brain-rest` | `.env` or hosting env vars |
| `AGENT_MEMORY_API_URL` | Optional. Your Supabase project URL + `/functions/v1/agent-memory-api` | `.env` or hosting env vars |
| `AGENT_MEMORY_WORKSPACE_ID` | Optional. Default workspace for Agent Memory governance views | `.env` or hosting env vars |
| `AGENT_MEMORY_PROJECT_ID` | Optional. Default project filter for Agent Memory governance views | `.env` or hosting env vars |
| `SESSION_SECRET` | Generate: `openssl rand -hex 32` | `.env` or hosting env vars |
| `AUTH_COOKIE_SECURE` | Optional. Force HTTPS-only auth cookies when set to `true`; leave unset for localhost previews | `.env` or hosting env vars |
| `OB1_DEMO_AUTH_BYPASS` | Optional. Local walkthrough capture only; bypasses login when set to `true` | local shell only |
| `OB1_DASHBOARD_DEMO_KEY` | Optional. Local walkthrough capture key used by the demo REST shim | local shell only |
| `RESTRICTED_PASSPHRASE_HASH` | Optional. Generate: `echo -n "passphrase" \| shasum -a 256` | `.env` or hosting env vars |

## Steps
Expand Down Expand Up @@ -69,7 +76,12 @@ Edit `.env` and set your values:

```
NEXT_PUBLIC_API_URL=https://YOUR-PROJECT-REF.supabase.co/functions/v1/open-brain-rest
# Optional if your Agent Memory function follows the standard slug:
# AGENT_MEMORY_API_URL=https://YOUR-PROJECT-REF.supabase.co/functions/v1/agent-memory-api
# AGENT_MEMORY_WORKSPACE_ID=ob1-staging
SESSION_SECRET=your-32-char-secret-here
# Optional on HTTPS hosts:
# AUTH_COOKIE_SECURE=true
```

### Step 4: Run locally
Expand Down Expand Up @@ -103,6 +115,7 @@ When working correctly:
- **Search** returns results with similarity scores (semantic mode) or rank scores (full-text mode)
- **Add to Brain** auto-routes short text (< 500 chars, single paragraph) to single capture, and long/structured text to extraction with dry-run preview
- **Detail page** shows full thought content with metadata, inline edit for content/type/importance, and linked reflections
- **Agent Memory** shows pending agent-written memories, lets you confirm/evidence-only/reject them, inspects provenance/source data, and loads recall traces by request id

## Workflow Board

Expand Down Expand Up @@ -162,9 +175,22 @@ The dashboard calls these endpoints on your Open Brain REST API:
| `/thoughts?type=task` | GET | Workflow board (filtered by type) |
| `/thought/:id` | PUT | Workflow board (status/priority updates) |

Agent Memory pages also call these endpoints on `agent-memory-api`:

| Endpoint | Method | Used By |
|----------|--------|---------|
| `/memories` | GET | Agent Memory list by status/scope |
| `/memories/review` | GET | Pending review queue |
| `/memories/:id` | GET | Memory inspector |
| `/memories/:id/review` | PATCH | Confirm, evidence-only, reject, stale, or restrict memory |
| `/recall-traces/:request_id` | GET | Recall trace debugger |

> [!NOTE]
> If your Open Brain instance doesn't have all these endpoints (e.g., no smart-ingest or duplicates), those pages will show errors but the core pages (dashboard, browse, search, detail) will still work.

> [!IMPORTANT]
> OB1's real `thoughts.id` values are UUID strings. The dashboard treats thought IDs as strings end to end so detail links, workflow updates, audit deletes, and duplicate resolution work against production Supabase rows.

## Optional: Restricted Content

If you've applied the [sensitivity-tiers](https://github.com/NateBJones-Projects/OB1/pull/110) primitive and want to control access to sensitive thoughts:
Expand All @@ -188,6 +214,21 @@ The dashboard uses **iron-session** for encrypted HTTP-only session cookies:

No API key is stored in environment variables or exposed to the browser.

## Local Walkthrough Capture

The walkthrough asset pipeline lives in [docs/walkthroughs/ob1-agent-dashboard](../../docs/walkthroughs/ob1-agent-dashboard). It seeds the Dashboard, Thoughts, Workflow, Duplicates, Audit, Agent Memory, and Recall Trace surfaces with Nate B. Jones / OB1 demo data for screenshots, PDF guides, and video walkthroughs.

The dashboard has a gated local-only bypass for that capture flow:

```bash
OB1_DEMO_AUTH_BYPASS=true
OB1_DASHBOARD_DEMO_KEY=local-screenshot-key
NEXT_PUBLIC_API_URL=http://127.0.0.1:3024
AGENT_MEMORY_API_URL=http://127.0.0.1:3022
```

Do not enable `OB1_DEMO_AUTH_BYPASS` in shared previews or production. It exists so repeatable screenshot and video generation can run without putting real API keys in browser automation.

## Tech Stack

- **Next.js 16** (App Router)
Expand Down
Loading
Loading