summaryrefslogtreecommitdiff
path: root/AI_AGENT_SETUP.md
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-01-13 15:03:20 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-01-13 15:03:20 -1000
commit9cee3f78483532828a2f72c65eb2b952b2ded670 (patch)
treedfd14dc91a9493f031bd5f15d047427a91344507 /AI_AGENT_SETUP.md
parentfbf803978e1512b6833188cd91a7f00df1244e8b (diff)
remove agent access feature
Diffstat (limited to 'AI_AGENT_SETUP.md')
-rw-r--r--AI_AGENT_SETUP.md276
1 files changed, 0 insertions, 276 deletions
diff --git a/AI_AGENT_SETUP.md b/AI_AGENT_SETUP.md
deleted file mode 100644
index acf2da4..0000000
--- a/AI_AGENT_SETUP.md
+++ /dev/null
@@ -1,276 +0,0 @@
-# AI Agent Access Setup Guide
-
-## Quick Start
-
-### 1. Generate API Key
-```bash
-# Generate a secure 64-character API key
-openssl rand -hex 32
-```
-
-Example output: `a1b2c3d4e5f6...`
-
-### 2. Add to Environment
-Add to your `.env` file:
-```bash
-AI_AGENT_API_KEY=a1b2c3d4e5f6...
-```
-
-### 3. Start the Dashboard
-```bash
-go run cmd/dashboard/main.go
-```
-
-You should see:
-```
-AI agent access enabled at /api/claude/snapshot
-Starting server on http://localhost:8080
-```
-
-### 4. Test the Endpoint
-```bash
-curl -H "Authorization: Bearer a1b2c3d4e5f6..." \
- http://localhost:8080/api/claude/snapshot | jq .
-```
-
-## Usage from Claude.ai
-
-### Method 1: Direct WebFetch
-When conversing with Claude, share:
-
-**URL:** `http://localhost:8080/api/claude/snapshot`
-**Token:** `a1b2c3d4e5f6...` (share separately, not in chat history)
-
-Claude can then fetch your dashboard:
-```
-User: "What tasks do I have today?"
-
-Claude: [Calls WebFetch with Authorization header]
-Claude: "You have 3 tasks due today:
-1. Review PRs (Work, Priority 4)
-2. Buy groceries (Personal, Priority 1)
-3. Call dentist (Health, Priority 2)"
-```
-
-### Method 2: MCP Server (Advanced)
-If you have Claude Desktop with MCP support:
-
-Add to your MCP config:
-```json
-{
- "mcpServers": {
- "personal-dashboard": {
- "command": "curl",
- "args": [
- "-H",
- "Authorization: Bearer YOUR_TOKEN_HERE",
- "-s",
- "http://localhost:8080/api/claude/snapshot"
- ]
- }
- }
-}
-```
-
-## Response Format
-
-### Successful Response (200 OK)
-```json
-{
- "generated_at": "2026-01-09T15:30:00Z",
- "tasks": {
- "today": [
- {
- "id": "task_123",
- "content": "Review PRs",
- "priority": 4,
- "due": "2026-01-09T17:00:00Z",
- "project": "Work",
- "completed": false
- }
- ],
- "overdue": [],
- "next_7_days": []
- },
- "meals": {
- "today": {
- "date": "2026-01-09",
- "breakfast": "Oatmeal with protein powder",
- "lunch": "Chicken salad",
- "dinner": "Salmon with veggies"
- },
- "next_7_days": []
- },
- "notes": {
- "recent": [
- {
- "title": "Sprint planning notes",
- "modified": "2026-01-09T10:15:00Z",
- "preview": "Discussed Q1 goals and team capacity...",
- "path": "work/sprint-planning.md"
- }
- ]
- },
- "trello_boards": [
- {
- "id": "board_123",
- "name": "Work Projects",
- "cards": [
- {
- "id": "card_456",
- "name": "Complete project proposal",
- "list": "In Progress",
- "due": "2026-01-15T00:00:00Z",
- "url": "https://trello.com/c/card456"
- }
- ]
- }
- ]
-}
-```
-
-### Error Response (401 Unauthorized)
-```json
-{
- "error": "unauthorized",
- "message": "Invalid or missing token"
-}
-```
-
-## Security Best Practices
-
-### ✅ Do
-- Generate a long, random key (32+ bytes)
-- Store key in `.env` file (gitignored)
-- Use HTTPS in production
-- Rotate key periodically (change in `.env`)
-- Share token with Claude separately from URL
-
-### ❌ Don't
-- Commit API key to git
-- Share key in chat history
-- Use simple/guessable keys
-- Expose over HTTP in production
-- Include key in URL query parameters
-
-## Data Limits
-
-The endpoint is optimized for AI consumption:
-
-- **Tasks**: Today + overdue + next 7 days only
-- **Notes**: 10 most recent, 150 char preview each
-- **Meals**: Today + next 7 days
-- **Trello**: All boards and cards
-- **Total Response**: < 100KB (typically 10-50KB)
-
-## Caching
-
-- Responses are cached for 5 minutes
-- Same cache as web dashboard
-- Reduces load on external APIs (Todoist, Trello, etc.)
-
-## Troubleshooting
-
-### "Invalid or missing token"
-- Check `Authorization: Bearer` prefix is included
-- Verify token matches `.env` file exactly
-- No extra spaces or newlines in token
-
-### "AI agent access not configured"
-- Ensure `AI_AGENT_API_KEY` is set in `.env`
-- Restart the server after changing `.env`
-
-### Empty response sections
-- Trello/Todoist/PlanToEat APIs may be down
-- Check dashboard web UI to see if data loads there
-- Review server logs for API errors
-
-## Production Deployment
-
-### With Caddy (Automatic HTTPS)
-```caddyfile
-dashboard.yourdomain.com {
- reverse_proxy localhost:8080
-}
-```
-
-### With nginx
-```nginx
-server {
- listen 443 ssl http2;
- server_name dashboard.yourdomain.com;
-
- ssl_certificate /path/to/cert.pem;
- ssl_certificate_key /path/to/key.pem;
-
- location / {
- proxy_pass http://localhost:8080;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- }
-}
-```
-
-Then share with Claude:
-- **URL**: `https://dashboard.yourdomain.com/api/claude/snapshot`
-- **Token**: (your API key)
-
-## Example Claude Conversations
-
-### Check Today's Tasks
-```
-User: "What do I need to do today?"
-
-Claude: [Fetches /api/claude/snapshot]
-
-Claude: "Here's what you have for today:
-
-Tasks:
-- Review PRs (Work, Priority 4, due 5pm)
-- Buy groceries (Personal, Priority 1)
-
-Meals:
-- Breakfast: Oatmeal
-- Lunch: Chicken salad
-- Dinner: Salmon with veggies"
-```
-
-### Check Overdue Items
-```
-User: "Do I have anything overdue?"
-
-Claude: [Fetches snapshot]
-
-Claude: "You have 2 overdue tasks:
-1. Submit expense report (Work, was due Jan 5)
-2. Schedule dentist appointment (Health, was due Jan 7)"
-```
-
-### Review Recent Notes
-```
-User: "What notes have I created recently?"
-
-Claude: [Fetches snapshot]
-
-Claude: "Your 3 most recent notes:
-1. Sprint planning notes (modified today at 10:15am)
-2. Customer feedback summary (modified Jan 8)
-3. Architecture decision record (modified Jan 6)"
-```
-
-## Rate Limiting (Future)
-
-Currently no rate limiting. For production use, consider adding:
-- 100 requests/hour per token
-- Implement using middleware
-- Return 429 status when exceeded
-
-## Next Steps
-
-1. ✅ Generate API key
-2. ✅ Add to .env
-3. ✅ Test with curl
-4. ✅ Share URL + token with Claude
-5. ✅ Start conversing!
-
-Enjoy your AI-powered personal dashboard! 🚀