Getting started
Everything you need to run TX-1 locally and understand what each part does.
Prerequisites
- macOS — required for Tauri v2 global shortcut (Cmd+K) and the transparent window API
- Node.js 18+ — for the React frontend build
- Rust — via rustup.rs. Tauri v2 compiles the Rust shell.
- Python 3.12 — for the FastAPI sidecar and OR-Tools solver
- uv — Python package manager. Significantly faster than pip for sidecar dependency resolution.
- Anthropic API key — used by the Dispatcher (Haiku), Inspector (Haiku), and Strategist (Sonnet) agents
Setup
1. Clone
TX-1 is currently in private development — the repository is not publicly available. Contact us for access.
2. Python sidecar
cd python_app uv venv --python python3.12 .venv source .venv/bin/activate uv pip install -r requirements.txt # Add your API key echo "ANTHROPIC_API_KEY=sk-ant-..." > .env # Start the sidecar (DB auto-seeds on first launch) uvicorn main:app --port 8765
3. React frontend (separate terminal)
cd tx1-terminal npm install npm run tauri dev
4. Open
The app launches with a Home screen showing your projects, quick actions, and available networks. Create a project, connect it to a network, and start typing commands in the terminal tab.
Workspace & UI
TX-1 organises work into projects, each containing one or more tabs. Tabs can be terminal sessions (connected to a network) or system panels.
Terminal Commands
❯ check health→ HEALTH_CHECK❯ run baseline→ SOLVE_REQUEST❯ run amsterdam→ SOLVE_REQUEST❯ reset→ RESET_SCENARIO❯ reset amsterdam→ RESET_SCENARIO❯ reset all→ RESET_SCENARIO❯ history→ RESEARCHDemo Flow
The recommended sequence for a live demo or first run:
❯ reset all # ensure both networks are in dirty state
❯ check health # show the Inspector finding the constraint violation
❯ run baseline # Chicago: INFEASIBLE → Sensitivity → InfeasibilityCard
# → ⌘↵ to approve → OPTIMAL ($47,880)
❯ run amsterdam # EU: INFEASIBLE → Sensitivity → InfeasibilityCard
# → ⌘↵ to approve → OPTIMAL
❯ history # Archivist now has 2 approved fixes in memory
❯ reset all # back to dirty state — ready to demo againrun baseline runs will show the Archivist surfacing that historical fix as context for the Strategist — demonstrating the learning loop.Key Concepts
Guardrails
TX-1 is designed for enterprise use where unreviewed data mutations are unacceptable. The following guardrails are non-negotiable:
- Dry-run before every proposal. No SQL patch reaches the user without being proven feasible in a rolled-back transaction.
- HITL gate on every mutation. The database is never written to without an explicit human Approve signal. Auto-dismissal after 5 minutes makes no changes.
- Audit log for all decisions. Every agent-proposed change and human decision is written to audit_log with user_approved=1/0.
- Context window guard. The Strategist never receives the full database — only schema headers and violation-relevant rows.
- Immutable master data. The Strategist is prompted to never modify nodes.latitude, nodes.longitude, nodes.type, or the products table. Attempting to do so triggers a high-severity warning card instead.
- Sidecar localhost-only. The FastAPI sidecar binds to 127.0.0.1 only — no external network exposure.
Troubleshooting
The WebSocket to the sidecar is down. Ensure uvicorn main:app --port 8765 is running in the python_app directory with the virtualenv active. Check that ANTHROPIC_API_KEY is set in python_app/.env.
The global shortcut was firing on both keydown and keyup. This was fixed by the ShortcutState::Pressed guard in lib.rs. If you see this, rebuild the Tauri shell: npm run tauri dev.
Chicago was previously fixed and the capacity is still at 12,000. Type reset to restore dirty data, then run again.
Sonnet occasionally wraps its JSON in markdown fences despite the system prompt. The agent has a fence-stripper that handles this. If it persists, check your API key quota.
Harmless. ChromaDB 0.6.x has an internal telemetry API mismatch. It does not affect functionality — the Archivist store and retrieval work correctly.