replica-omnisciente/experiments/hermes-launch
2026-07-04 16:55:35 +01:00
..
config feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
demo feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
hardware_lab_node feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
orchestrator feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
scripts feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
skills docs(infra): correct savearth-mcp IP to 192.168.0.212 and document public tunnel endpoint 2026-07-04 16:55:35 +01:00
tests feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
.env.example feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
.gitignore feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
AGENTS.md feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
demo.py feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
HARDWARE_INTEGRATION_REPORT.md feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
hardware_integration_test.py feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
pyproject.toml feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
README.md feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00
server.py feat(experiments): add Aurelio × Hermes hackathon launch workspace 2026-06-22 13:50:47 +01:00

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-a55b if NVIDIA_NIM_API_KEY is set; otherwise local Ollama llama3.2 at http://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 for aurelio_authorize_budget, aurelio_record_spend, and aurelio_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:

  1. nervura_fleet_health — check the self-hosted fleet
  2. herdades_query_registry — query the land/heritage registry
  3. mestres_find_master — find a local stonemason
  4. triunfal_build_firmware + aurelio_flash_firmware — build and flash the ESP32 node via the Hardware Lab Node mesh
  5. rusticas_deploy_environmental_node — deploy the environmental sensor
  6. aurelio_authorize_budget — authorise spend via Stripe
  7. scibot_ask_research_question — research low-power soil-moisture techniques
  8. replica_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_status
  • aprendiz_run_vision_inference, aprendiz_family_manager_status
  • maquina_send_notification, maquina_sync_device
  • herdades_query_registry, herdades_register_asset
  • mestres_find_master, mestres_schedule_visit
  • rusticas_survey_building, rusticas_biodiversity_status, rusticas_deploy_environmental_node
  • electrosat_audit_device_security, electrosat_uart_recon
  • triunfal_build_firmware, triunfal_flash_firmware
  • aurelio_build_firmware, aurelio_flash_firmware, aurelio_start_ppk2, aurelio_capture_logic_analyzer
  • tear_program_fpga, tear_build_riscv_payload
  • matriz_build_edge_os_image, matriz_deploy_k3s_node
  • aurelio_authorize_budget, aurelio_record_spend, aurelio_capture_authorized_payment
  • scibot_search_papers, scibot_ask_research_question
  • replica_search_brain, replica_sync_brain
  • aurelio_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 (13 min)
  • X post drafted and published tagging @NousResearch
  • Typeform submitted
  • Discord #submissions link posted