TerraFin / docs /deployment.md
sk851's picture
feat(signals): monitor reliability sweep + multi-component /health page
6e13ca4
---
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)