TradingAgents/agent_os
ahmet guzererler 6b3dd4172a
feat: finalise storage layout, run history loading & phase-level re-run (#121)
* feat: introduce flow_id with timestamp-based report versioning

Replace run_id with flow_id as the primary grouping concept (one flow =
one user analysis intent spanning scan + pipeline + portfolio). Reports
are now written as {timestamp}_{name}.json so load methods always return
the latest version by lexicographic sort, eliminating the latest.json
pointer pattern for new flows.

Key changes:
- report_paths.py: add generate_flow_id(), ts_now() (ms precision),
  flow_id kwarg on all path helpers; keep run_id / pointer helpers for
  backward compatibility
- ReportStore: dual-mode save/load — flow_id uses timestamped layout,
  run_id uses legacy runs/{id}/ layout with latest.json
- MongoReportStore: add flow_id field and index; run_id stays for compat
- DualReportStore: expose flow_id property
- store_factory: accept flow_id as primary param, run_id as alias
- runs.py / langgraph_engine.py: generate and thread flow_id through all
  trigger endpoints and run methods
- Tests: add flow_id coverage for all layers; 905 tests pass

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: finalise storage layout, run history loading & phase-level re-run

Storage / persistence
- flow_id (8-char hex) replaces run_id as the disk storage key; all
  sub-phases of one auto run share the same flow_id directory
- Startup hydration: hydrate_runs_from_disk() rebuilds in-memory run
  store from run_meta.json on server restart (events lazy-loaded)

WebSocket / run history fixes
- Lazy-load events from run_events.jsonl on first WS connect; fixes
  blank terminal when clicking a historical run after restart
- Orphaned "running" runs (server restarted mid-run) auto-detected and
  marked "failed" with partial events replayed correctly

Phase re-run fixes
- Analysts checkpoint: use any() instead of all() — Social Analyst is
  optional; all() silently blocked checkpoint saves in typical runs
- Checkpoint lookup: pass original flow_id through rerun_params so
  _date_root() resolves to the correct flow_id subdirectory
- Selective event filtering on re-run: preserves scan nodes and other
  tickers; only removes stale events for the re-run phase+ticker
- Frontend graph now shows full auto-flow context during phase re-runs

Documentation
- ADR 018: canonical reference for storage layout, event schema,
  WebSocket streaming flows, checkpoint structure, MongoDB vs local
- ADR 013 updated: reflects background-task + lazy-loading evolution
- ADR 015 marked superseded by ADR 018
- CLAUDE.md: AgentOS storage section + 4 new critical patterns
- CURRENT_STATE.md updated

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-26 11:12:16 +01:00
..
backend feat: finalise storage layout, run history loading & phase-level re-run (#121) 2026-03-26 11:12:16 +01:00
frontend feat: finalise storage layout, run history loading & phase-level re-run (#121) 2026-03-26 11:12:16 +01:00
DESIGN.md docs: finalize AgentOS documentation 2026-03-22 22:54:20 +01:00
README.md docs: finalize AgentOS documentation 2026-03-22 22:54:20 +01:00
__init__.py fix: add missing __init__.py files to agent_os package tree 2026-03-23 07:16:38 +00:00

README.md

AgentOS: Visual Observability & Command Center

AgentOS is a real-time observability and command center for the TradingAgents framework. It provides a visual interface to monitor multi-agent workflows, analyze portfolio risk metrics, and trigger automated trading pipelines.

System Architecture

  • Backend: FastAPI (Python)
    • Orchestrates LangGraph executions.
    • Streams real-time events via WebSockets.
    • Serves portfolio data from Supabase.
    • Port: 8088 (default)
  • Frontend: React (TypeScript) + Vite
    • Visualizes agent workflows using React Flow.
    • Displays high-fidelity risk metrics (Sharpe, Regime, Drawdown).
    • Provides a live terminal for deep tracing.
    • Port: 5173 (default)

Getting Started

1. Prerequisites

  • Python 3.10+
  • Node.js 18+
  • uv (recommended for Python environment management)

2. Backend Setup

# From the project root
export PYTHONPATH=$PYTHONPATH:.
uv run python agent_os/backend/main.py

The backend will start on http://127.0.0.1:8088.

3. Frontend Setup

cd agent_os/frontend
npm install
npm run dev

The frontend will start on http://localhost:5173.

Key Features

  • Literal Graph Visualization: Real-time DAG rendering of agent interactions.
  • Top 3 Metrics: High-level summary of Sharpe Ratio, Market Regime, and Risk/Drawdown.
  • Live Terminal: Color-coded logs with token usage and latency metrics.
  • Run Controls: Trigger Market Scans, Analysis Pipelines, and Portfolio Rebalancing directly from the UI.

Port Configuration

AgentOS uses port 8088 for the backend to avoid conflicts with common macOS services. The frontend is configured to communicate with 127.0.0.1:8088.