| --- |
| title: Deployment & Operations |
| summary: Running TerraFin in local, demo, and operator-managed environments. |
| --- |
| |
| # Deployment & Operations |
|
|
| This page is the operational companion to [Getting Started](getting-started.md). |
| It focuses on running the interface safely and predictably. |
|
|
| ## Start Modes |
|
|
| Run the interface from `src/TerraFin/interface/`. |
|
|
| ```bash |
| python server.py run |
| python server.py start |
| python server.py stop |
| python server.py status |
| python server.py restart |
| ``` |
|
|
| | Command | Use when... | |
| |---------|-------------| |
| | `run` | You want a foreground dev server | |
| | `start` | You want a simple background process on one machine | |
| | `stop` | You need to stop the background process if it exists | |
| | `status` | You are checking whether the PID-managed process is alive | |
| | `restart` | You changed env vars or saved model credentials | |
|
|
| ## Health And Readiness |
|
|
| These endpoints stay at the root even when `TERRAFIN_BASE_PATH` is set: |
|
|
| | Path | Purpose | |
| |------|---------| |
| | `/health` | Multi-component status page (HTML). Active probes for Agent / Telegram / Signals Provider with 30 s in-process cache and 2 s per-probe timeout. Append `?refresh=1` to bypass the cache. | |
| | `/health.json` | Same data as JSON for scripts and uptime checks | |
| | `/ready` | Readiness check with cache-manager and private-data validation | |
|
|
| Use `/ready` for orchestration startup gating; use `/health.json` for |
| periodic uptime probes (scrape interval should be ≥ the 30 s cache TTL to |
| avoid wasted upstream calls). The HTML `/health` is meant for humans |
| opening the page in a browser. |
|
|
| ## Base Paths |
|
|
| `TERRAFIN_BASE_PATH` prefixes the feature routes, but not the health endpoints. |
|
|
| Example: |
|
|
| - `TERRAFIN_BASE_PATH=/terrafin` |
| - page routes become `/terrafin/chart`, `/terrafin/dashboard`, and so on |
| - `/health` and `/ready` remain unchanged |
|
|
| ## Public / Demo Mode |
|
|
| TerraFin can run without private infrastructure. |
|
|
| Recommended public-safe baseline: |
|
|
| 1. copy `.env.example` to `.env` |
| 2. leave `TERRAFIN_PRIVATE_SOURCE_*` unset |
| 3. optionally configure `FRED_API_KEY` |
| 4. set `TERRAFIN_SEC_USER_AGENT` if you want SEC-backed features |
|
|
| In this mode: |
|
|
| - public market and economic providers still work |
| - private-only widgets fall back to bundled fixtures or empty defaults |
| - writable watchlists stay disabled unless MongoDB is configured |
|
|
| ## Operator-Managed Mode |
|
|
| Use operator-managed mode when you want: |
|
|
| - private market-insight or dashboard data |
| - writable watchlists |
| - explicit hosted model/provider control |
| - a deployment-specific auth and persistence boundary |
|
|
| At minimum, define: |
|
|
| - `TERRAFIN_PRIVATE_SOURCE_*` for the private endpoint |
| - `TERRAFIN_MONGODB_URI` if you want watchlist writes |
| - provider credentials or `terrafin-agent models ...` state for hosted agent use |
|
|
| ## Hosted Agent Operational Notes |
|
|
| - Restart the server after changing saved model-manager state. |
| - Sessions pin a resolved `provider/model` on creation, so new env changes do |
| not silently rewrite existing sessions. |
| - GitHub Copilot login stores the GitHub token locally, then exchanges it for a |
| short-lived Copilot API token at runtime. |
|
|
| ## Formal Docs Hosting |
|
|
| This repo now includes a formal docs site scaffold using MkDocs Material and a |
| GitHub Pages workflow: |
|
|
| - site config: `mkdocs.yml` |
| - local preview: `mkdocs serve` |
| - CI build/deploy: `.github/workflows/docs-pages.yml` |
|
|
| That keeps the docs static-hostable on GitHub without depending on a separate |
| publish repo or docs SaaS. |
|
|
| ### GitHub Pages Source |
|
|
| The workflow deploys through GitHub Actions, not by publishing the repository |
| root or `docs/` folder directly. |
|
|
| If `https://kiungsong.github.io/TerraFin/` is still showing the repository |
| README instead of the MkDocs site, the repository is almost certainly still set |
| to branch-based Pages publishing. |
|
|
| For this workflow to take over, switch the repository once in: |
|
|
| 1. `Settings` |
| 2. `Pages` |
| 3. `Build and deployment` |
| 4. `Source = GitHub Actions` |
|
|
| If that switch is not made, `actions/deploy-pages` may fail with a `404`, and |
| the old branch-based README site will continue to be served. |
|
|
| ## Related Docs |
|
|
| - [Configuration](configuration.md) |
| - [Interface Overview](interface.md) |
| - [Agent Model Management](agent/models.md) |
| - [License & Data Rights](legal.md) |
|
|