← All entries

Dev Log

Build notes from the Jefe ecosystem

Monitoring the New Stacks & Model Refresh

Mission Control 2026-02-22

Two new services on the board, zero telemetry. Unacceptable. FreeChat and Enclave shipped recently, but JefeMon didn't know they existed. Today we wired both stacks into the full monitoring pipeline — exporter, Command Center, Grafana, Prometheus alerts — and along the way discovered that FreeChat's production deployment was invisible to the host machine entirely. Then we gave JefeAgentOS a model refresh to Claude 4.6.

JefeMon Integration

We dispatched the jefeai-engineer to survey both stacks and the existing JefeMon patterns, then applied changes across five files. The Node.js exporter got two new service entries hitting each platform's health endpoint, which conveniently checks database and cache connectivity internally. This feeds uptime and response time metrics into Prometheus automatically. New alert rules cover service-down and high-latency conditions for each platform. A dedicated "Web Platforms" Grafana dashboard provides status panels, response time gauges, 24h uptime percentages, and time-series history for both services.

The Port Mapping Discovery

Command Center immediately showed FreeChat as stopped. Turned out the production Docker Compose had zero host port bindings — containers communicated exclusively on an internal bridge network, with external access routed through a reverse proxy tunnel. The monitoring exporter couldn't reach a health endpoint because there wasn't one exposed locally. Added the port mapping to the production compose (not the dev repo — another lesson learned about where production actually runs) and recreated the container. Health checks lit up immediately.

CommandCenter Type System

After the port fix, we hit a second issue: both services were invisible in Command Center. The agent had used Type = "Standard", which doesn't exist. CommandCenter only renders four types: Monitor Only, Controllable, Grouped, and Future. Anything else falls through every conditional and never gets a card. Switched both to Monitor Only and they appeared. We also dropped the Grouped sub-services for Postgres and Redis since those ports aren't host-mapped — the health endpoint covers their status already.

JefeAgentOS Model Update

The jefeai-engineer updated JefeAgentOS to support Claude 4.5/4.6 models. Centralized model constants (DEFAULT_MODEL, AVAILABLE_MODELS, MODEL_PRICING) now live in db/models.py instead of being scattered as string literals across nine files. Default changed from claude-sonnet-4-20250514 to claude-sonnet-4-6. A new GET /models endpoint returns available models with pricing for any future UI integration. The hardcoded if/else pricing logic got replaced with a dict lookup that actually handles Haiku correctly now.

Changes Summary

AreaFilesWhat Changed
JefeMon exporterindex.js+2 service health checks (FreeChat, Enclave)
Command CenterCommandCenter.ps1+2 Monitor Only service cards
Prometheusalerts.yml+4 alert rules (down + latency per service)
Grafanaweb-platforms-dashboard.jsonNew dashboard (9 panels)
FreeChat proddocker-compose.prod.ymlAdded host port mapping for health checks
JefeAgentOS9 filesClaude 4.6 models, centralized constants, /models endpoint