Last updated: 2026-04-01 For: New Claude Code instances connecting to the Oracle VPS
# SSH into the VPS
ssh -i ~/.ssh/oracle_key.pem ubuntu@64.181.198.130
# Start Claude Code
cd /home/ubuntu/edgeclaw
claude
Everything you need (CLAUDE.md, memory, MCP config, settings) is already on the server. Just SSH in and run claude.
| Field | Value |
|---|---|
| Host | 64.181.198.130 |
| User | ubuntu |
| Auth | SSH key (~/.ssh/oracle_key.pem on your PC) |
| OS | Ubuntu 22.04 ARM/aarch64 |
| Specs | 4 OCPUs, 23GB RAM, 194GB disk |
| No sudo | Password was never set (SSH key only) |
/home/ubuntu/edgeclaw/)The main project. TypeScript + Hono server running on port 8080. Caddy reverse proxy on 443 (domain: edge-assist.duckdns.org).
Key commands:
systemctl --user restart edgeclawsystemctl --user status edgeclawjournalctl --user -u edgeclaw --no-pager -n 50curl -s http://localhost:8080/health | python3 -m json.toolhttp://localhost:8080/data-statusAll SQLite, stored in /home/ubuntu/edgeclaw/data/db/:
research-pipeline.db — main data (sports odds, player props, weather, etc.)edge-scanner.db — game edge detection resultsprop-edge-nba-*.db — player prop edges (one DB per stat: points, rebounds, assists, threes, blocks, steals)memory-tiered.db — EdgeClaw's tiered memory systemaudit.db — API cost trackinghealth.db — server health metricstasks.db — user task queue| Bot | Service | Purpose |
|---|---|---|
| @Claude2107Bot | claude-bridge |
Boss talks to Claude Code via Telegram |
| @EdgeTechSupportBot | claude-techsupport |
Claude tech support channel |
| @GGAnalystBot | gemini-bridge |
Gemini analyst |
| @GGTechSupportBot | gemini-techsupport |
Gemini tech support |
| @ClaudeAnalystBot | claude-analyst |
Claude analyst |
All run as systemctl --user services. Do NOT interfere with them.
5 Discord bots (edge, techsupport, analyst for both Claude and Gemini). Same systemctl --user pattern.
/home/ubuntu/ecocell/)Phone resale business platform on port 3100. Has its own MCP server at /home/ubuntu/ecocell-mcp/.
/home/ubuntu/vidstrip/)Video metadata stripping app on port 3000.
src/pipeline/data/scrapers/prop-edge-scanner.tssrc/pipeline/data/scrapers/player-name-match.tsprop-edge-nba-{points,rebounds,assists,threes,blocks,steals}.dbsrc/pipeline/data-status.ts (massive file, ~5400 lines)docs/edge-scanner-display-spec.mddocs/council-spec.mddata/councils/2026-04-01/orderbook-confidence/ruling.txtmlb_prop_edges), need separate handling| File | Purpose |
|---|---|
CLAUDE.md |
Auto-loaded by Claude Code — all project context |
DESK-MASTER-SHEET.md |
All 19 desks, their status, models, schedules |
src/pipeline/data-status.ts |
Dashboard + all data viewer pages (~5400 lines) |
src/pipeline/data/scrapers/prop-edge-scanner.ts |
Player prop edge scanner |
src/pipeline/data/scrapers/player-name-match.ts |
FanDuel↔Kalshi player matching |
src/pipeline/sports/edge-scanner.ts |
Game totals/spreads edge scanner |
src/core/agent.ts |
Main EdgeClaw AI agent |
src/core/council.ts |
Council system |
src/config.ts |
All env config |
docs/council-spec.md |
Council process spec |
docs/edge-scanner-display-spec.md |
Edge page display spec |
.env on the server)| Service | Key Location |
|---|---|
| xAI/Grok | .env → XAI_API_KEY |
| The Odds API | .env → ODDS_API_KEY |
| Kalshi | .env → KALSHI_API_KEY_ID + RSA key |
| Groq (free Whisper) | .env → GROQ_API_KEY |
| Gemini | Cloudflare proxy (Oracle geo-blocks Google) |
| Claude/Anthropic | Subscription (not API) |
Claude Code memory: /home/ubuntu/.claude/projects/-home-ubuntu/memory/
MEMORY.md — index file (auto-loaded, keep under 200 lines)panel-rules.md — council system specEdgeClaw memory: data/db/memory-tiered.db (separate system, don't touch)
/home/ubuntu/shared/)Drop zone between EdgeClaw and Claude Code:
proposals/ — EdgeClaw code proposals for reviewreports/ — diagnostics, spend reportsEvery new session, immediately:
ls /home/ubuntu/shared/proposals/ — check for pending proposals