| .. | ||
| config | ||
| demo | ||
| hardware_lab_node | ||
| orchestrator | ||
| scripts | ||
| skills | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| demo.py | ||
| HARDWARE_INTEGRATION_REPORT.md | ||
| hardware_integration_test.py | ||
| pyproject.toml | ||
| README.md | ||
| server.py | ||
Portugal Futurista Aurelio × Hermes
Portugal Futurista Aurelio is the brain behind the network of artists, artisans, small farmers, households, small towns, small villages, remote places that will have all the tools needed to fight against the hegemony of automation. And will give back to Humanity what was long promised with the industrial revolution: the coming age of Humanity's new renaissance.
For that there is Aurelio — the apprentice of all sensations — connecting the physical world with the cybernetic world, a true and powerful AI cyber-physical system.
What this is
This is the submission workspace for the Hermes Agent Accelerated Business Hackathon by Nous Research, NVIDIA, and Stripe.
Aurelio is a self-hosted agent operating system for IoT and engineering operations. Hermes Agent, powered by NVIDIA NIM, becomes the reasoning layer that can see, plan, build, and act across Portugal Futurista's infrastructure. Every "lab bench" skill is reframed as a community empowerment tool: flashing an ESP32 is not debugging — it is deploying a soil sensor for a small farm; power profiling is not telemetry — it is keeping a village's water pump alive through winter; Stripe authorisation is not payments — it is letting a cooperative buy parts without a finance department.
Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ Hermes Agent (NVIDIA NIM / Ollama fallback) │
└───────────────────────────────┬─────────────────────────────────────┘
│ MCP (SSE)
┌───────────────────────────────▼─────────────────────────────────────┐
│ Olhos-de-Orpheu — single MCP gateway │
│ Proxmox CT 206 · http://192.168.0.16:8001/sse │
│ │
│ Exposes every Portugal Futurista project, plus Stripe + sci-bot. │
└───────────────────────────────┬─────────────────────────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
Hardware Lab Nodes Project tools External APIs
├─ bench-lab ├─ nervura-electrica └─ Stripe
│ 192.168.0.88:8002 ├─ aprendiz-de-sensacoes └─ CrossRef/sci-bot
└─ asus-server ├─ maquina-na-mao
192.168.0.38:8002 ├─ o-arquivo-das-herdades
├─ o-guia-dos-mestres-vaos
├─ ode-das-maquinas-rusticas
├─ ode-electro-sat
├─ ode-triunfal-firmware
├─ tear-de-silicio
├─ matriz-da-maquina
└─ replica
Central gateway: Olhos-de-Orpheu
Hermes connects to one MCP server: http://192.168.0.16:8001/sse (Proxmox CT 206). Olhos exposes all project tools and proxies physical-device calls to the Hardware Lab Node mesh. If a lab node is unreachable, Olhos returns a staged/demo response so the agent can keep reasoning.
Hardware Lab Node mesh
Each lab node is a FastMCP SSE server that exposes only the devices physically attached to its host. Olhos routes aurelio_* calls by capability:
| Capability | Routed node | Physical devices |
|---|---|---|
esp32_*, serial_*, list_devices, detect_espressif_* |
bench-lab (192.168.0.88:8002) |
ESP32-S3 on /dev/ttyACM1 |
ppk2_*, capture_logic_analyzer, xgecu_*, barcode_*, list_usb_hid_devices, printers |
asus-server (192.168.0.38:8002) |
Nordic PPK2, Saleae logic analyzer, USB HID/barcode, printers |
Start a node locally:
# Bench machine
scripts/run_bench_lab_node.sh
# ASUS / Proxmox host (deployed under /opt/aurelio-lab-node-asus)
sudo systemctl enable --now aurelio-lab-node-asus
Hermes / AI configuration
scripts/setup_hermes.py writes ~/.hermes/config.yaml and ~/.hermes/.env:
- Model:
nvidia/nemotron-3-ultra-550b-a55bifNVIDIA_NIM_API_KEYis set; otherwise local Ollamallama3.2athttp://192.168.0.104:11434. - Gateway:
http://192.168.0.16:8001/sse(SSE). Falls back to the local stdio wrapper if the gateway is unreachable. - Stripe:
STRIPE_SECRET_KEY(test mode by default). Used foraurelio_authorize_budget,aurelio_record_spend, andaurelio_capture_authorized_payment.
Sub-agent orchestrator
orchestrator/orchestrator.py queues independent coding tasks and spawns up to 4 concurrent Kimi CLI sub-agents (--print --yolo --afk). State is persisted in orchestrator/state.json.
# Run the queued tasks
python orchestrator/orchestrator.py --tasks orchestrator/tasks.json [--max-concurrent 4]
# Check progress
python orchestrator/orchestrator.py --status
Office & lab hardware
| Category | Devices |
|---|---|
| Office / retail | printers, barcode readers, POS keyboards, thermal printers |
| Test & measurement | oscilloscopes, logic analyzers, HIL rigs |
| Wireless | SDRs (RTL-SDR / HackRF) |
| Embedded | ESP32 DevKits, Nordic nRF52, STM32, Microchip PolarFire Icicle |
| Programmers | Xgecu T76 / MiniPro, OpenOCD / USB-JTAG |
| Power | Nordic PPK2 power profiler |
Quick start
# 1. Install dependencies
uv venv .venv --python 3.11
source .venv/bin/activate
uv pip install -e ".[dev]"
# 2. Configure environment
cp .env.example .env
# Edit .env with your NVIDIA_NIM_API_KEY and STRIPE_SECRET_KEY
# 3. Configure Hermes (writes ~/.hermes/config.yaml)
export NVIDIA_NIM_API_KEY="nvapi-..."
export STRIPE_SECRET_KEY="sk_test_..."
python scripts/setup_hermes.py
# 4. Run the staged demo (no hardware needed)
python demo.py
# 5. Run the live demo (requires Olhos-de-Orpheu reachable)
python demo.py --live
# 6. Run smoke tests and quick validation
PYTHONPATH=/home/fcunha/portugalfuturista/replica/experiments/hermes-launch pytest tests/
python -m py_compile server.py demo.py hardware_lab_node/server.py orchestrator/orchestrator.py
# 7. (Optional) Launch the sub-agent orchestrator
python orchestrator/orchestrator.py --tasks orchestrator/tasks.json --max-concurrent 4
Demo scenario: "A small farming cooperative in Alentejo"
"Aurelio, we want to recover an old watermill, monitor soil moisture, keep a biodiversity log, and find a local mason. Plan the work, build and flash the ESP32 firmware, deploy the sensor node, query the land registry, check the health of our Proxmox fleet, search for the right master craftsperson, and authorise a €200 budget for parts."
Hermes talks only to Olhos-de-Orpheu, which orchestrates:
nervura_fleet_health— check the self-hosted fleetherdades_query_registry— query the land/heritage registrymestres_find_master— find a local stonemasontriunfal_build_firmware+aurelio_flash_firmware— build and flash the ESP32 node via the Hardware Lab Node meshrusticas_deploy_environmental_node— deploy the environmental sensoraurelio_authorize_budget— authorise spend via Stripescibot_ask_research_question— research low-power soil-moisture techniquesreplica_search_brain— save the lesson to collective memory
See demo/scenario.md for the full script.
Repository layout
.
├── README.md
├── pyproject.toml
├── .env.example
├── demo.py # Alentejo cooperative demo
├── scripts/
│ ├── setup_hermes.py # Writes ~/.hermes/config.yaml and .env
│ ├── olhos_de_orpheu_mcp.py # Local stdio fallback for Olhos-de-Orpheu
│ ├── run_bench_lab_node.sh # Start bench-lab hardware node
│ └── test_lab_node_client.py # Quick MCP/SSE node smoke test
├── demo/
│ ├── scenario.md # Full demo storyboard
│ └── demo.mp4 # Final submission video
├── hardware_lab_node/ # SSE MCP server for local bench hardware
├── orchestrator/ # Sub-agent task queue (max 4 concurrent Kimi CLIs)
│ ├── orchestrator.py
│ └── tasks.json
├── skills/ # Aurelio skill library (used by Olhos-de-Orpheu)
└── tests/
└── test_smoke.py
The single gateway: Olhos-de-Orpheu
olhos-de-orpheu is the unified MCP gateway for every Portugal Futurista project. Hermes connects to only this server. Olhos routes physical-device calls to the Hardware Lab Node mesh and proxies project/Stripe/sci-bot calls internally.
Example tool surface:
nervura_fleet_health,check_proxmox_container_statusaprendiz_run_vision_inference,aprendiz_family_manager_statusmaquina_send_notification,maquina_sync_deviceherdades_query_registry,herdades_register_assetmestres_find_master,mestres_schedule_visitrusticas_survey_building,rusticas_biodiversity_status,rusticas_deploy_environmental_nodeelectrosat_audit_device_security,electrosat_uart_recontriunfal_build_firmware,triunfal_flash_firmwareaurelio_build_firmware,aurelio_flash_firmware,aurelio_start_ppk2,aurelio_capture_logic_analyzertear_program_fpga,tear_build_riscv_payloadmatriz_build_edge_os_image,matriz_deploy_k3s_nodeaurelio_authorize_budget,aurelio_record_spend,aurelio_capture_authorized_paymentscibot_search_papers,scibot_ask_research_questionreplica_search_brain,replica_sync_brainaurelio_manifesto
Web landing pages
The janela-do-desassossego-web frontend hosts public landing pages:
/— Portugal Futurista philosophy-first overview/aurelio— cyber-physical system + office/lab hardware/hermes— multi-node orchestration story/lab— existing lab dashboard (oscilloscope + microscope)
Connecting Hermes
python scripts/setup_hermes.py
hermes doctor
hermes mcp list
hermes chat -q "Aurelio, help the Alentejo cooperative recover the old watermill, deploy a soil-moisture node, find a local mason, and authorise €200 for parts."
Submission checklist
- Hermes Agent installed and configured
- Single MCP gateway: Olhos-de-Orpheu
- Nemotron 3 Ultra NIM provider configured (Ollama fallback ready)
- Stripe skill wired and tested
- Hardware Lab Node mesh configured (bench + ASUS)
- Landing pages deployed at portugalfuturista.org
- Demo video recorded (1–3 min)
- X post drafted and published tagging @NousResearch
- Typeform submitted
- Discord #submissions link posted
Links
- Hackathon: https://form.typeform.com/to/hpEifIK4
- Hermes Agent: https://github.com/NousResearch/hermes-agent
- NVIDIA NIM: https://build.nvidia.com
- Stripe test keys: https://dashboard.stripe.com/test/apikeys
- Réplica Omnisciente: https://github.com/portugalfuturista/replica