mirror of
https://github.com/myronblair/ai-context
synced 2026-06-30 17:50:08 -05:00
Update all files - JARVIS migrated to PVE1 VM 211
This commit is contained in:
@@ -2,12 +2,19 @@
|
||||
|
||||
## Access
|
||||
- **Dashboard:** https://jarvis.orbishosting.com (login: myron / Joker1974!!!)
|
||||
- **Admin portal:** https://jarvis.orbishosting.com/admin (same login)
|
||||
- **DB:** `jarvis_db` on DO localhost — user: `jarvis_user` / `J4rv1s_Pr0t0c0l_2026!`
|
||||
- **Admin portal:** https://jarvis.orbishosting.com/admin/ (same login)
|
||||
- **DB:** `jarvis_db` on VM 211 localhost — user: `jarvis_user` / `J4rv1s_Pr0t0c0l_2026!`
|
||||
- **phpMyAdmin:** https://jarvis.orbishosting.com/phpmyadmin (myron / Joker1974!!!)
|
||||
- **GitHub repo:** myronblair/jarvis (auto-deploy on push to main)
|
||||
|
||||
## File Structure (on DO at /home/jarvis.orbishosting.com/)
|
||||
## Server Location
|
||||
JARVIS runs on **PVE1 VM 211** at `10.48.200.211` (migrated from DO 2026-06-18).
|
||||
- **SSH:** `sshpass -p 'Joker1974!!!' ssh -o StrictHostKeyChecking=no root@10.48.200.211`
|
||||
- **Stack:** nginx / PHP 8.3 / MariaDB / Redis / Arc Reactor
|
||||
- **Web root:** `/var/www/jarvis/`
|
||||
- Traffic routed via NPM (10.48.200.200) → VM 211
|
||||
|
||||
## File Structure (on VM 211 at /var/www/jarvis/)
|
||||
```
|
||||
public_html/
|
||||
index.html — main Iron Man HUD (all UI)
|
||||
@@ -26,75 +33,88 @@ api/
|
||||
do_server.php — reads /proc directly (no SSH loopback)
|
||||
stats_cache.php — every 5min cron: Proxmox cluster API, HA, weather, news
|
||||
facts_collector.php — every 3min cron: system stats, site health
|
||||
system.php — local system metrics (services: lshttpd,mysql,redis,memcached,postfix,dovecot,jarvis-agent)
|
||||
system.php — local system metrics
|
||||
alerts.php — alert CRUD + auto-generate
|
||||
news.php — serves api_cache['news'] + custom kb_facts(category='custom_news')
|
||||
deploy/
|
||||
reactor.py — Arc Reactor source (copy to /opt/jarvis-arc/reactor.py + restart)
|
||||
```
|
||||
|
||||
## Arc Reactor (AI Routing Daemon)
|
||||
- **Daemon:** `/opt/jarvis-arc/reactor.py` (Python, port 7474), service: `jarvis-arc`
|
||||
- **Deploy:** copy `deploy/reactor.py` → `/opt/jarvis-arc/reactor.py` + `systemctl restart jarvis-arc`
|
||||
- Vision with actual screenshot → Claude `claude-opus-4-8-20251101`
|
||||
- Guardian/SITREP/Vision text-only → Groq `llama-3.3-70b-versatile`
|
||||
- Email drafting / research → Claude
|
||||
|
||||
## Agent System
|
||||
- **Registration key:** `f846a9aaf7ce9a61742c63c87c4186052a71d2a580c65518`
|
||||
- **Install one-liner (Linux):** `curl -sk https://jarvis.orbishosting.com/install-agent.sh | bash -s <hostname> <linux|proxmox>`
|
||||
- **For VMs (need sudo):** `curl -sk https://jarvis.orbishosting.com/install-agent.sh > /tmp/i.sh && echo "Joker1974!" | sudo -S bash /tmp/i.sh <hostname> linux`
|
||||
- **Agent config:** `/etc/jarvis-agent/config.json` — runtime state at `/var/lib/jarvis-agent/state.json`
|
||||
- **Agent config:** `/etc/jarvis-agent/config.json` (key: `jarvis_url`) — runtime state at `/var/lib/jarvis-agent/state.json`
|
||||
- **If agent gets 401 "Invalid agent key":** state.json has stale key — overwrite with correct agent_id + api_key from DB
|
||||
- **Heartbeat:** every 10s | **Metrics:** every 30s | **Commands:** polled on heartbeat
|
||||
- **Shell commands:** send via agent_commands table with `{"command":"/path/to/script","allowed":true}`
|
||||
- **Heartbeat:** every 10s | **Metrics:** every 30s
|
||||
|
||||
## Currently Online Agents
|
||||
| agent_id | hostname | IP | type |
|
||||
|----------|----------|----|------|
|
||||
| jarvis-do_orbis.or | jarvis-do | 165.22.1.228 | linux |
|
||||
| claude_pve | claude | 10.48.200.90 | proxmox |
|
||||
| pve2_e147a8bc | pve2 | 10.48.200.91 | proxmox |
|
||||
| claude_pve | pve1 | 10.48.200.90 | proxmox |
|
||||
| pve2_pve2 | pve2 | 10.48.200.91 | proxmox |
|
||||
| networkbackup_NetworkB | networkbackup | 10.48.200.99 | linux |
|
||||
| homeassistant_ha | homeassistant | 10.48.200.97 | homeassistant |
|
||||
| homebridge_b57cbaea | homebridge | 10.48.200.18 | linux |
|
||||
| alien-pc_windows | alien-pc | 10.48.200.66 | linux |
|
||||
|
||||
**Pending:** jellyfin (10.48.200.33), ollama-ai (10.48.200.95)
|
||||
| novacpx_e3b07264 | novacpx | 10.48.200.110 | linux |
|
||||
| jellyfin_7e386833 | jellyfin | 10.48.200.33 | linux |
|
||||
| MediaStack_2c00b1b8 | mediastack | 10.48.200.35 | linux |
|
||||
| fortigate_gw | fortigate | 10.48.200.1 | linux |
|
||||
| yealink_t48s | yealink | 10.48.200.43 | linux |
|
||||
|
||||
## Network Scanning
|
||||
- PVE1 cron: `*/3 * * * * /usr/local/bin/jarvis-netscan.sh`
|
||||
- Script runs nmap, parses output, POSTs JSON to `https://165.22.1.228/api/netscan` with `X-Registration-Key` header
|
||||
- Scan Now button in admin queues shell command to PVE1 agent (picks up within 10s)
|
||||
- Script runs nmap, parses output, POSTs JSON to `https://jarvis.orbishosting.com/api/netscan` with `X-Registration-Key` header
|
||||
- Scan Now button queues shell command to PVE1 agent (picks up within 10s)
|
||||
|
||||
## Chat Architecture
|
||||
```
|
||||
Tier 0: HA entity control (fuzzy match → call HA API)
|
||||
Tier 0.5: Network device management
|
||||
Tier 0.7: Planner intents (add task, my tasks, schedule, daily briefing)
|
||||
Tier 1: KB intent engine (response type → instant reply)
|
||||
Tier 1b: Action intents (network_scan → DB data + queue PVE1 scan)
|
||||
Tier 2: Ollama llama3.2 at http://10.48.200.95:11434 (5s timeout)
|
||||
Tier 2: Ollama llama3.2 at http://10.48.200.210:11434 (5s timeout)
|
||||
Tier 3: Groq compound-beta-mini (cloud, fast)
|
||||
Tier 4: Claude API fallback
|
||||
```
|
||||
- Groq model name: `compound-beta-mini` (NOT `groq/compound-beta-mini`)
|
||||
- network_scan intent: action type — must be handled in Tier 1b or Groq will fabricate
|
||||
- HA_URL = `http://orbisne.fortiddns.com:8123`
|
||||
|
||||
## DB Key Tables
|
||||
```sql
|
||||
registered_agents — agent_id, hostname, agent_type, ip_address, api_key, status, last_seen
|
||||
registered_agents — agent_id, hostname, agent_type, ip_address, api_key, status, last_seen, version
|
||||
agent_metrics — agent_id, metric_type, metric_data(JSON), recorded_at
|
||||
-- Extract: JSON_EXTRACT(metric_data,'$.cpu_percent'), JSON_EXTRACT(metric_data,'$.memory.percent')
|
||||
-- NO cpu_pct/mem_pct columns — always use JSON_EXTRACT
|
||||
agent_commands — agent_id, command_type, command_data(JSON), status(pending/delivered)
|
||||
network_devices — ip, mac, hostname, alias, device_type, status, last_seen
|
||||
alerts — alert_type, title, message, severity, resolved
|
||||
kb_facts — category, fact_key, fact_value (custom_news category for pinned news)
|
||||
kb_facts — category, fact_key, fact_value
|
||||
kb_intents — intent_name, pattern(regex), response_template, action_type, priority, active
|
||||
api_cache — cache_key(proxmox/news/weather/ha_entities), data(JSON), updated_at
|
||||
tasks — title, notes, category, priority, status, due_date, due_time, completed_at
|
||||
appointments — title, description, category, start_at, end_at, location, all_day, reminder_min
|
||||
ha_entities — real-time HA entity states (updated by HA custom component)
|
||||
```
|
||||
|
||||
## Proxmox Cache
|
||||
- `stats_cache.php` uses cluster API at `orbisne.fortiddns.com:8006` (NOT PROXMOX_HOST local IP)
|
||||
## Proxmox API
|
||||
- `stats_cache.php` uses cluster API at `orbisne.fortiddns.com:8006`
|
||||
- Returns all VMs from both PVE1 and PVE2 via `/cluster/resources?type=vm`
|
||||
- Cache key: `proxmox` in api_cache table
|
||||
- Token: `root@pam!jarvis=c45b5feb-f9a9-445d-a626-14fbb959f78b`
|
||||
|
||||
## Cron Jobs (on DO)
|
||||
## Cron Jobs (on VM 211)
|
||||
```
|
||||
*/3 * * * * /usr/local/lsws/lsphp85/bin/lsphp .../facts_collector.php
|
||||
*/5 * * * * /usr/local/lsws/lsphp85/bin/lsphp .../stats_cache.php
|
||||
0 2 * * * /usr/local/bin/jarvis-backup.sh
|
||||
*/3 * * * * php /var/www/jarvis/api/endpoints/facts_collector.php
|
||||
*/5 * * * * php /var/www/jarvis/api/endpoints/stats_cache.php
|
||||
0 7 * * * /usr/local/bin/jarvis-backup.sh
|
||||
```
|
||||
**Cron on PVE1:**
|
||||
```
|
||||
@@ -104,9 +124,8 @@ api_cache — cache_key(proxmox/news/weather/ha_entities), data(JSON)
|
||||
## Backups
|
||||
- Script: `/usr/local/bin/jarvis-backup.sh`
|
||||
- Output: `/var/backups/jarvis/jarvis_backup_YYYY-MM-DD_HH-MM-SS.tar.gz`
|
||||
- Contains: all public_html dirs + SQL dumps of 6 DBs
|
||||
- Downloadable from: admin portal → BACKUPS tab
|
||||
- Retention: 7 days
|
||||
- Daily at 7am UTC (2am CDT), 7-day retention
|
||||
- Downloadable from admin portal → BACKUPS tab
|
||||
|
||||
## API Auth
|
||||
- Main JARVIS API: session token via `X-Session-Token` header (or PHP session)
|
||||
|
||||
Reference in New Issue
Block a user