Dex Distribution Checklist
Status: ✅ Ready for GitHub Distribution
This document verifies that Dex is properly configured for public distribution without exposing credentials or requiring manual path configuration.
✅ 1. Dynamic Paths (SOLVED)
Problem: Users will clone to different paths like /Users/alice/Documents/dex
Solution: Template + install script substitution (already implemented)
How It Works
- Template file:
System/.mcp.json.exampleuses{{VAULT_PATH}}placeholder - Install script:
install.sh(lines 49-55) automatically:- Detects current directory:
CURRENT_PATH="$(pwd)" - Replaces placeholder:
sed "s|{{VAULT_PATH}}|$CURRENT_PATH|g" - Generates
.mcp.json(gitignored)
- Detects current directory:
User Experience
cd ~/Documents/dex
./install.sh
# ✅ Creates .mcp.json with /Users/alice/Documents/dex
Status: No action needed — industry-standard pattern.
✅ 2. MCP Server Architecture (CLARIFIED)
Dex Core MCP Servers (7 total)
All shipped with Dex in core/mcp/:
| Server | File | Purpose | External Dependency |
|---|---|---|---|
| work-mcp | work_server.py |
Task/goal management | None (local files) |
| calendar-mcp | calendar_server.py |
Calendar integration | macOS Calendar.app |
| granola-mcp | granola_server.py |
Meeting processing | Granola cache file (optional) |
| career-mcp | career_server.py |
Career development | None (local files) |
| resume-mcp | resume_server.py |
Resume building | None (local files) |
| dex-improvements-mcp | dex_improvements_server.py |
System improvements | None (local files) |
| update-checker | update_checker.py |
Dex update checking | GitHub API (read-only) |
External MCPs (NOT part of Dex)
These are user-installed separately via Claude Desktop/Cursor settings:
cursor-ide-browser— Browser automationuser-granola— Official Granola MCP (different from dex granola-mcp)pendo— Pendo's hosted MCP server (OAuth, optional for Pendo customers)user-whatsapp,user-apify, etc. — Other user-installed integrations
Optional Dependencies
Granola (meeting transcription):
- Install script checks:
~/Library/Application Support/Granola/cache-v3.json - If found: "✅ Granola detected - meeting intelligence available"
- If not found: "ℹ️ Granola not detected - meeting intelligence won't work"
- User can install from https://granola.ai
- System works without it — users can paste meeting transcripts manually
Apple Calendar:
- Uses macOS Calendar.app via AppleScript (no API keys needed)
- Works with any calendar synced to Calendar.app (Google, Outlook, iCloud)
- macOS only (calendar-mcp gracefully degrades on other platforms)
Status: Documentation clear — no changes needed.
✅ 3. Credentials & Security (VERIFIED)
Gitignored Files
# Credentials
.env
.env.local
# Generated config
.mcp.json
# User data
System/user-profile.yaml
System/pillars.yaml
00-Inbox/
01-Quarter_Goals/
02-Week_Priorities/
03-Tasks/
04-Projects/
05-Areas/
07-Archives/
Credential Scan Results
Python MCP servers:
✅ No API keys found in core/mcp/*.py
✅ No hardcoded passwords/tokens
✅ No personal data
Environment variables:
- Template:
env.example(safe — no real keys) - Actual
.envis gitignored - Created during setup only if user enables optional features
What Gets Committed to GitHub
Safe to commit:
- ✅
System/.mcp.json.example— Template with{{VAULT_PATH}} - ✅
env.example— Template showing structure - ✅
core/mcp/*.py— MCP server code (no credentials) - ✅ Documentation and README
- ✅ Demo mode files (sanitized examples)
Never committed:
- ❌
.mcp.json— Generated, contains user paths - ❌
.env— Contains API keys if configured - ❌ User data folders (00-07)
- ❌
System/user-profile.yaml— Personal info
Status: Security verified — ready for public release.
📋 Pre-Release Checklist
Before pushing to GitHub:
Repository Setup
- Remove or sanitize
System/Session_Learnings/(contains personal work history) - Verify
.gitignoreis committed - Check no
.envor.mcp.jsonin git history:git log --all --full-history --name-only -- .env .mcp.json - Verify no API keys in commit history:
git log --all -S "sk-ant-" -S "ANTHROPIC_API_KEY" -S "OPENAI_API_KEY"
Documentation
- README links to actual podcast episode (currently placeholder)
- README links to blog post (currently placeholder)
- Verify GitHub repo URL in clone command
- Add LICENSE file (MIT recommended)
- Add CONTRIBUTING.md if accepting PRs
Testing
- Fresh clone on different machine
- Run
./install.shwith no prior Dex installation - Verify
.mcp.jsongenerates with correct paths - Run setup wizard:
/setupin Cursor - Test without Granola installed (graceful degradation)
- Test on Windows if supporting (install.sh needs .bat version)
Demo Mode
- Verify
System/Demo/contains no personal info - Test
/dex-demoenable/disable - Verify demo data is realistic but generic
🔐 Credential Management for Users
What Users Need to Know
99% of features work immediately — no API keys needed:
- Task management
- Person pages
- Project tracking
- Daily planning
- Meeting prep
- All
/commands
Optional API keys (only if enabling background automation):
- Anthropic API key — For
/prompt-improverand background meeting processing - OpenAI or Gemini — Alternative to Anthropic
Setup Flow
- First install: No
.envfile — everything works through Cursor - Optional: Run
/setup→ answers "Enable automatic meeting processing?" - If yes: System creates
.envfrom template, prompts for API key - If no: Skip entirely — manual meeting processing works fine
Security Best Practices
For users:
- Never commit
.envto their own repos - Use separate API keys for different projects
- Set usage limits in Anthropic console
For Dex maintainers:
- Keep
env.exampleup to date - Never commit real
.env - Document which features require keys
🚀 Distribution Recommendations
GitHub Release Strategy
v1.0.0 - Initial Public Release
Tag the release:
git tag -a v1.0.0 -m "Initial public release" git push origin v1.0.0Create GitHub Release:
- Title: "Dex v1.0.0 — Your AI Chief of Staff"
- Description: Paste first 3 sections of README
- Attach: Installation guide, demo video (if available)
Post-release:
- Monitor issues for Windows compatibility
- Create FAQ from common questions
- Build community in Discussions tab
Alternative Distribution
For teams/organizations:
- Fork repo → customize roles/templates → distribute internal URL
- Include company-specific integrations in
core/mcp-custom/ - Company pillars in
System/pillars-company.yamltemplate
For consultants:
- Charge for customization/setup services
- Pre-configured bundles for specific roles (PM, Sales, etc.)
- Training packages
✅ Final Verification
Run this before pushing to GitHub:
# Check for credentials in tracked files
git ls-files | xargs grep -E '(sk-ant-|sk-[a-zA-Z0-9]{48}|AIza[a-zA-Z0-9-_]{35}|ANTHROPIC_API_KEY|OPENAI_API_KEY)' 2>/dev/null
# Expected output: (no matches except in env.example and documentation)
# Check for personal data
git ls-files | xargs grep -iE '(dave|killeen|[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,})' | grep -v 'README\|example\|template\|CHANGELOG'
# Expected output: Only documentation/examples, no real emails/names
# Verify .gitignore is working
git status --ignored | grep -E '(\.env$|\.mcp\.json$|00-Inbox|04-Projects|System/user-profile\.yaml)'
# Expected output: Shows these as ignored, not tracked
Status: ✅ Ready for distribution
- Paths dynamically configured via install script
- MCP servers documented (7 core, others external)
- No credentials exposed
.gitignoreproperly configured- User data protected
- Documentation complete
Next steps:
- Complete pre-release checklist
- Push to GitHub
- Announce to audience
- Monitor for issues
Questions? See 06-Resources/Dex_System/Dex_Technical_Guide.md for implementation details.