[dashboards] Add Open Brain dashboard with auth fixes#83
[dashboards] Add Open Brain dashboard with auth fixes#83justfinethanku merged 3 commits intomainfrom
Conversation
Addresses 6 items from code review: 1. Package name "web" → "open-brain-dashboard" 2. MCP key moved from query string to Authorization header 3. robots.txt disallows crawling (personal dashboard) 4. package-lock.json removed from git + gitignored 5. app.d.ts: MCP env vars optional, comment explains preferred vs fallback 6. Indentation fix in MCP proxy error return svelte-check: 0 errors, 0 warnings vite build: clean production build Original dashboard by @headcrest. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The proxy was sending the MCP key as an Authorization Bearer header, but the open-brain-mcp Edge Function expects it as a ?key= query parameter. Also rewrites the README with a credential source table, OAuth sign-in troubleshooting, and search debugging guidance based on real setup experience. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OB1 Automated Review✅ Folder structure — All files are in allowed directories
Result: 13/14 checks passed. Please fix the issues above and push again. Post-Merge TasksThese don't block merge — they're reminders for admins after this PR lands.
|
justfinethanku
left a comment
There was a problem hiding this comment.
Code Review — PR #83: Open Brain Dashboard
Summary
This is a well-executed SvelteKit dashboard contribution that provides a clean web UI for interacting with Open Brain. The PR combines work from @headcrest (original dashboard, PR #57) and @matthallett1 (auth fixes and setup docs, PR #66).
What's Good
Architecture:
- ✅ Uses remote MCP pattern correctly — connects to Supabase Edge Function via URL, not local stdio transport
- ✅ MCP proxy implementation (
/api/mcp/+server.ts) properly handles both JSON and SSE response formats - ✅ Server-side auth protection via Supabase SSR
- ✅ Proper environment variable handling (prefers server-only
MCP_URL/MCP_KEY, falls back to public variants)
Documentation:
- ✅ Comprehensive README with all required sections (Prerequisites, Quick Start, Expected Outcome, Troubleshooting)
- ✅ Excellent Credential Tracker section — makes setup much easier for users
- ✅ Clear deployment instructions for Vercel/Netlify
- ✅ Troubleshooting section addresses common issues (missing env vars, auth problems, search not working, embedding issues)
Safety & Standards:
- ✅ No credentials, API keys, or secrets in code
- ✅ No unsafe SQL operations
- ✅ Binary files (favicon.ico 5.3KB, apple-touch-icon.png 55KB) well under 1MB limit
- ✅ No local MCP server patterns (
claude_desktop_config.json, stdio transport) - ✅ Valid JSON in
metadata.json
Metadata Validation:
- ✅ All required fields present:
name,description,category,author,version,requires,tags,difficulty,estimated_time - ✅
category: "dashboards"✓ - ✅
requires.open_brain: true✓ - ✅ 7 relevant tags
- ✅ Author attribution clear (Mads Bergdal/headcrest)
- ✅ Proper semantic versioning (1.0.0)
PR Format:
- ✅ Title follows format:
[dashboards] Add Open Brain dashboard with auth fixes - ✅ Description clearly explains what's included and credits both contributors
Minor Recommendations (Optional)
-
README — Add "Dashboard Artifacts" note (nice-to-have):
Per CONTRIBUTING.md rule #6, dashboards should have "frontend code or package.json" — this PR has both. Consider adding a brief note at the top clarifying this is a full SvelteKit app, not just HTML templates. -
Environment variable naming consistency (nice-to-have):
The code correctly prefersMCP_URL/MCP_KEYoverPUBLIC_MCP_URL/PUBLIC_MCP_KEY, but the .env.example could make this hierarchy even clearer with a comment like:# Preferred (server-only, secure): MCP_URL=... MCP_KEY=... # Fallback (works, but exposes in browser bundle — use only if needed): # PUBLIC_MCP_URL=... # PUBLIC_MCP_KEY=...
Update: I see this is already in the .env.example! Great work.
-
Troubleshooting — Search section is excellent (praise):
The detailed explanation of why semantic search might fail (missing OpenRouter key, no embeddings, threshold too high) is exactly what users will need. This sets a great example for future dashboard contributions.
Automated Review Checklist
| Rule | Status | Notes |
|---|---|---|
| 1. Folder structure | ✅ Pass | dashboards/open-brain-dashboard/ |
| 2. Required files | ✅ Pass | README.md, metadata.json, package.json, source files |
| 3. Metadata valid | ✅ Pass | Valid JSON, all required fields present |
| 4. No credentials | ✅ Pass | Only .env.example templates |
| 5. SQL safety | ✅ Pass | No SQL files (dashboard, not extension) |
| 6. Category artifacts | ✅ Pass | Full SvelteKit app with package.json and TypeScript source |
| 7. PR format | ✅ Pass | Title starts with [dashboards] |
| 8. No binary blobs | ✅ Pass | favicon.ico (5.3KB), apple-touch-icon.png (55KB) |
| 9. README completeness | ✅ Pass | All sections present and detailed |
| 12. Scope check | ✅ Pass | All changes within dashboards/open-brain-dashboard/ (plus minor .gitignore update) |
| 13. Internal links | ✅ Pass | Relative link to ../../docs/01-getting-started.md is correct |
| 14. Remote MCP pattern | ✅ Pass | Connects to Edge Function via URL, no local stdio |
Verdict: Ready to merge ✅
This is a high-quality contribution that follows all OB1 standards and provides real value to the community. The combination of @headcrest's original UI work and @matthallett1's auth/docs improvements makes this a strong first dashboard entry.
Special callouts:
- The Credential Tracker is a pattern other contributors should adopt
- The Troubleshooting section's depth (especially the search explanation) is exemplary
- MCP proxy implementation is clean and handles edge cases well
No changes required. Recommend merging.
Reviewed files: 32 (all in dashboards/open-brain-dashboard/)
Reviewed by: Claude Code (automated + manual review)
Review date: 2026-03-23
justfinethanku
left a comment
There was a problem hiding this comment.
Code Review — PR #83: Open Brain Dashboard
Summary
This is a well-executed SvelteKit dashboard contribution that provides a clean web UI for interacting with Open Brain. The PR combines work from @headcrest (original dashboard, PR #57) and @matthallett1 (auth fixes and setup docs, PR #66).
What's Good
Architecture:
- ✅ Uses remote MCP pattern correctly — connects to Supabase Edge Function via URL, not local stdio transport
- ✅ MCP proxy implementation (
/api/mcp/+server.ts) properly handles both JSON and SSE response formats - ✅ Server-side auth protection via Supabase SSR
- ✅ Proper environment variable handling (prefers server-only
MCP_URL/MCP_KEY, falls back to public variants)
Documentation:
- ✅ Comprehensive README with all required sections (Prerequisites, Quick Start, Expected Outcome, Troubleshooting)
- ✅ Excellent Credential Tracker section — makes setup much easier for users
- ✅ Clear deployment instructions for Vercel/Netlify
- ✅ Troubleshooting section addresses common issues (missing env vars, auth problems, search not working, embedding issues)
Safety & Standards:
- ✅ No credentials, API keys, or secrets in code
- ✅ No unsafe SQL operations
- ✅ Binary files (favicon.ico 5.3KB, apple-touch-icon.png 55KB) well under 1MB limit
- ✅ No local MCP server patterns (
claude_desktop_config.json, stdio transport) - ✅ Valid JSON in
metadata.json
Metadata Validation:
- ✅ All required fields present:
name,description,category,author,version,requires,tags,difficulty,estimated_time - ✅
category: "dashboards"✓ - ✅
requires.open_brain: true✓ - ✅ 7 relevant tags
- ✅ Author attribution clear (Mads Bergdal/headcrest)
- ✅ Proper semantic versioning (1.0.0)
PR Format:
- ✅ Title follows format:
[dashboards] Add Open Brain dashboard with auth fixes - ✅ Description clearly explains what's included and credits both contributors
Minor Recommendations (Optional)
-
README — Add "Dashboard Artifacts" note (nice-to-have):
Per CONTRIBUTING.md rule #6, dashboards should have "frontend code or package.json" — this PR has both. Consider adding a brief note at the top clarifying this is a full SvelteKit app, not just HTML templates. -
Environment variable naming consistency (nice-to-have):
The code correctly prefersMCP_URL/MCP_KEYoverPUBLIC_MCP_URL/PUBLIC_MCP_KEY, and the .env.example already documents this hierarchy clearly. Great work. -
Troubleshooting — Search section is excellent (praise):
The detailed explanation of why semantic search might fail (missing OpenRouter key, no embeddings, threshold too high) is exactly what users will need. This sets a great example for future dashboard contributions.
Automated Review Checklist
| Rule | Status | Notes |
|---|---|---|
| 1. Folder structure | ✅ Pass | dashboards/open-brain-dashboard/ |
| 2. Required files | ✅ Pass | README.md, metadata.json, package.json, source files |
| 3. Metadata valid | ✅ Pass | Valid JSON, all required fields present |
| 4. No credentials | ✅ Pass | Only .env.example templates |
| 5. SQL safety | ✅ Pass | No SQL files (dashboard, not extension) |
| 6. Category artifacts | ✅ Pass | Full SvelteKit app with package.json and TypeScript source |
| 7. PR format | ✅ Pass | Title starts with [dashboards] |
| 8. No binary blobs | ✅ Pass | favicon.ico (5.3KB), apple-touch-icon.png (55KB) |
| 9. README completeness | ✅ Pass | All sections present and detailed |
| 12. Scope check | ✅ Pass | All changes within dashboards/open-brain-dashboard/ (plus minor .gitignore update) |
| 13. Internal links | ✅ Pass | Relative link to ../../docs/01-getting-started.md is correct |
| 14. Remote MCP pattern | ✅ Pass | Connects to Edge Function via URL, no local stdio |
Verdict: Ready to merge ✅
This is a high-quality contribution that follows all OB1 standards and provides real value to the community. The combination of @headcrest's original UI work and @matthallett1's auth/docs improvements makes this a strong first dashboard entry.
Special callouts:
- The Credential Tracker is a pattern other contributors should adopt
- The Troubleshooting section's depth (especially the search explanation) is exemplary
- MCP proxy implementation is clean and handles edge cases well
No changes required. Recommend merging.
Reviewed files: 32 (all in dashboards/open-brain-dashboard/)
Reviewed by: Claude Code (automated + manual review)
Review date: 2026-03-23
Code Review — PR #83: Open Brain DashboardSummaryThis is a well-executed SvelteKit dashboard contribution that provides a clean web UI for interacting with Open Brain. The PR combines work from @headcrest (original dashboard, PR #57) and @matthallett1 (auth fixes and setup docs, PR #66). What's GoodArchitecture:
Documentation:
Safety & Standards:
Metadata Validation:
PR Format:
Minor Recommendations (Optional)
Automated Review Checklist
Verdict: Ready to merge ✅This is a high-quality contribution that follows all OB1 standards and provides real value to the community. The combination of @headcrest's original UI work and @matthallett1's auth/docs improvements makes this a strong first dashboard entry. Special callouts:
No changes required. Recommend merging. Reviewed files: 32 (all in |
…teKit dashboard Renames folder to avoid conflict with the existing SvelteKit-based dashboard (#83). Both dashboards are valid community options. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
Combines #57 and #66.
Original dashboard by @headcrest (PR #57)
Auth fixes and setup docs by @matthallett1 (PR #66)
Test plan
dashboards/open-brain-dashboard/contains all expected files.envconfigured/api/mcpwith access key header🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com