Skip to content

[dashboards] Add Open Brain dashboard with auth fixes#83

Merged
justfinethanku merged 3 commits intomainfrom
contrib/combined-dashboard
Mar 24, 2026
Merged

[dashboards] Add Open Brain dashboard with auth fixes#83
justfinethanku merged 3 commits intomainfrom
contrib/combined-dashboard

Conversation

@justfinethanku
Copy link
Collaborator

Summary

  • Adds the Open Brain SvelteKit dashboard with Supabase auth, MCP proxy endpoint, and thought browsing UI
  • Includes review fixes (removed lock file, cleaned up metadata)
  • Fixes MCP proxy auth (proper access key header handling) and improves setup docs

Combines #57 and #66.

Original dashboard by @headcrest (PR #57)
Auth fixes and setup docs by @matthallett1 (PR #66)

Test plan

  • Verify dashboards/open-brain-dashboard/ contains all expected files
  • Confirm Supabase auth flow works with .env configured
  • Test MCP proxy endpoint at /api/mcp with access key header
  • Validate metadata.json against schema

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 (1M context) noreply@anthropic.com

headcrest and others added 3 commits March 18, 2026 20:21
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>
@github-actions
Copy link

OB1 Automated Review

Folder structure — All files are in allowed directories
Required files — README.md and metadata.json found in all contribution folders
Metadata valid — All metadata.json files have required fields
No credentials — No API keys, tokens, or secrets detected
SQL safety — No destructive SQL or core table modifications
Category artifacts — Required file types present for each category
PR format — Title follows [category] Description format
No binary blobs — No oversized or binary files
README completeness — All READMEs include Prerequisites, Steps, and Expected Outcome
Primitive dependencies — All declared primitive dependencies exist and are linked in README
LLM clarity review — Covered by Claude PR Review workflow
Remote MCP pattern — No local MCP server patterns detected — uses remote MCP correctly
Scope check — Files changed outside contribution folder(s):

  • .gitignore
    Contribution PRs should only modify files in their own folder.
    Internal links — All relative links in READMEs resolve to existing files

Result: 13/14 checks passed. Please fix the issues above and push again.


Post-Merge Tasks

These don't block merge — they're reminders for admins after this PR lands.

@github-actions github-actions bot added the dashboard Contribution: frontend template label Mar 19, 2026
Copy link
Collaborator Author

@justfinethanku justfinethanku left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

  1. 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.

  2. Environment variable naming consistency (nice-to-have):
    The code correctly prefers MCP_URL/MCP_KEY over PUBLIC_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.

  3. 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

Copy link
Collaborator Author

@justfinethanku justfinethanku left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

  1. 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.

  2. Environment variable naming consistency (nice-to-have):
    The code correctly prefers MCP_URL/MCP_KEY over PUBLIC_MCP_URL/PUBLIC_MCP_KEY, and the .env.example already documents this hierarchy clearly. Great work.

  3. 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
Copy link
Collaborator Author

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)

  1. README — Add "Dashboard Artifacts" note (nice-to-have):
    Per CONTRIBUTING.md rule [docs] Fix review workflow for docs PRs #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.

  2. Environment variable naming consistency (nice-to-have):
    The code correctly prefers MCP_URL/MCP_KEY over PUBLIC_MCP_URL/PUBLIC_MCP_KEY, and the .env.example already documents this hierarchy clearly. Great work.

  3. 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 justfinethanku merged commit e68b5e1 into main Mar 24, 2026
1 of 4 checks passed
@justfinethanku justfinethanku deleted the contrib/combined-dashboard branch March 24, 2026 01:53
justfinethanku added a commit that referenced this pull request Mar 24, 2026
…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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dashboard Contribution: frontend template

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants