File size: 5,090 Bytes
2e658e7
 
 
 
 
 
 
 
 
 
 
 
1f8cf56
2e658e7
1f8cf56
 
 
2e658e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f8cf56
 
2e658e7
 
 
 
 
 
1f8cf56
2e658e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f8cf56
2e658e7
 
1f8cf56
2e658e7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1f8cf56
 
 
 
 
 
 
2e658e7
 
 
1f8cf56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
---
title: HermesFace
sdk: docker
emoji: ๐Ÿš€
colorFrom: green
colorTo: green
pinned: false
app_port: 7860
---

# HermesFace / Hermes Futures Desk

HermesFace is an overlay installed onto [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) and deployed on Hugging Face Spaces. It adds an authenticated, deterministic cryptocurrency Futures analysis desk to the existing Hermes web application on port **7860** โ€” no second backend, port, or decision engine.

The Futures Desk is **analysis-first, safety-first, and Paper-trading-first**. Datasource 4 remains the authority for Futures safety metadata. Binance public data is tried first as a field-level fallback; KuCoin Futures continues the public-provider chain when Binance is unavailable or regionally restricted. Datasource 2 is complementary context. **Optional AI context** (Hermes auxiliary task `futures_advisory`) is advisory only and never alters deterministic decisions. DS4 uses a fast request plus one bounded cold-start wake retry. Provider provenance is preserved and no fallback may weaken `noTradeGuard`.

Read-only Futures tools are registered via the **`futures_trading` Hermes plugin** (`hermes_overlay/plugins/futures_trading/`). Dashboard and Telegram routes are mounted into the upstream Hermes FastAPI app by `scripts/sync_hf.py` (Option A โ€” existing URLs preserved).

The Space runs the authenticated Futures dashboard as its default single
process. The optional Hermes messaging/cron gateway is disabled by default to
keep the desktop stable; set `HERMES_GATEWAY_ENABLED=true` only when those
background integrations are intentionally required.

## Production UI data policy

The production dashboard does not populate market cards, positions, symbols,
watchlists, history, provider health, or charts with demo/random data. Every
server-backed value is loaded from the authenticated Futures and Telegram API
routes. If a provider, catalog, position response, or OHLCV window is not
available, the interface shows an explicit unavailable/blocked state and clears
any stale chart from the previous market. Manual symbol entry remains available
for a real server-side analysis, but it is never presented as a verified Futures
contract unless the authoritative verification path confirms it.

The UI distinguishes **deterministic system output** (emerald) from **optional AI context** (violet) on the trade-plan authority-contrast panel and advisory page.

## Quick links

- [Developer documentation index](docs/README.md)
- [Complete developer guide](docs/DEVELOPER_GUIDE.md)
- [Architecture](docs/ARCHITECTURE.md)
- [API reference](docs/API_REFERENCE.md)
- [Patch inventory](docs/PATCH_INVENTORY.md)
- [Datasource contracts](docs/DATA_PIPELINE_AND_CONTRACTS.md)
- [Frontend guide](docs/FRONTEND_GUIDE.md)
- [Environment reference](docs/ENVIRONMENT_CONFIGURATION.md)
- [Deployment runbook](docs/DEPLOYMENT_RUNBOOK.md)
- [Security and safety](docs/SECURITY_AND_SAFETY.md)
- [Operations and troubleshooting](docs/OPERATIONS_AND_TROUBLESHOOTING.md)
- [Testing and verification](docs/TESTING_AND_VERIFICATION.md)
- [Contributing](docs/CONTRIBUTING.md)
- [Current implementation status](docs/PROJECT_STATUS.md)

## Repository entry points

```text
app.py
Dockerfile
scripts/entrypoint.sh
scripts/sync_hf.py
hermes_overlay/plugins/futures_trading/
hermes_overlay/tools/futures_dashboard_api.py
hermes_overlay/tools/templates/hermes_futures_desk_luxury.html
hermes_overlay/external_ai/advisory.py
hermes_overlay/trading/trade_cycle.py
hermes_overlay/trading/dual_datasource_client.py
```

## Local container start

```bash
cp .env.example .env
# Fill required secrets without committing the file.
docker build -t hermesface .
docker run --rm -p 7860:7860 --env-file .env hermesface
```

Open `http://localhost:7860/futures` and authenticate with the configured Hermes dashboard credentials.


## Local verification

Run the repository checks from the project root:

```bash
python scripts/validate_startup_configuration.py
python scripts/check_migrations.py
python -m pytest hermes_overlay/tests -q
```

The first command validates fail-closed runtime configuration, the second checks deterministic migration plans, and the third runs the complete repository test suite (currently **433 passed**, with 2 pre-existing Dockerfile/dependency-inventory failures unrelated to Futures logic).

Optional browser E2E click-through (requires Chrome + Playwright):

```bash
python temp/e2e_futures_dashboard_clickthrough.py
```

## Safety notice

Do not weaken deterministic decisions, Datasource 4 authority, `noTradeGuard`, freshness checks, Futures verification, risk approval, Stop Loss / Take Profit, leverage, sizing, Paper execution validation, or Telegram webhook-only isolation. Do not use fabricated production market data. Do not execute Paper, Testnet, or Live trades during routine development verification. The three LLM mutation handlers (`set_leverage_and_margin`, `execute_futures_position`, `close_futures_position`) remain hard-reject stubs and are not registered in the runtime toolset.