Skip to content

drewdas/pyweb

Repository files navigation

    ╔══════════════════════════════════════════════════════════════════╗
    ║                                                                  ║
    ║     ▓▓▓  H A R N E S S   C O N S O L E  ▓▓▓   v2 · HERMES EDITION ║
    ║          an agent with a body                                    ║
    ║                                                                  ║
    ║     ▸ CAPTURE  ▸ COMMAND  ▸ GLANCE  ▸ APPROVE  ▸ TEACH            ║
    ║                                                                  ║
    ╚══════════════════════════════════════════════════════════════════╝

A LAN-only desk appliance running one long-lived Hermes agent on a Raspberry Pi. Capture a thought on the Cardputer in under five seconds; the agent works with terminal/file/web tools on the Pi; outcomes are composed by the agent itself onto an always-on e-ink broadsheet. Dangerous operations block on a physical Approve press.

Full design: docs/spec.md · Hardware claim audit: docs/hardware-verification.md · Latest multi-agent review: docs/review-2026-07-03.md.

   ┌─ SET UP THE APPLIANCE ────────────────────────────────────────────┐
   │                                                                   │
   │   A guided, retro-terminal wizard walks the whole bring-up —      │
   │   parts → Pi → preflight → deploy → Cardputer → first light —     │
   │   and writes your .env and concierge.json as you go.              │
   │                                                                   │
   │     ▸ No build:   open  setup/standalone.html  in a browser       │
   │     ▸ As an app:  cd setup && npm install && npm run dev          │
   │                                                                   │
   └───────────────────────────────────────────────────────────────────┘

See setup/README.md for the wizard. It's the recommended path — the appliance now refuses to start without its two secrets, and the wizard mints them for you.

Layout

  pyweb/
  ├─ docs/spec.md ................ consolidated specification (v2.0) — source of truth
  ├─ docker-compose.yml .......... Node A stack: hermes + console-connector
  ├─ hermes/Dockerfile ........... base image + the display plugin's native deps
  ├─ config/cli-config.yaml ...... Hermes config overlay (model, platform_toolsets, relay)
  ├─ plugins/display/ ............ in-process Hermes plugin owning the Inky (display_* toolset)
  ├─ connector/ .................. console platform connector — relay /relay WS + Cardputer HTTP
  ├─ skills/ ..................... authored skills: broadsheet-editor, concierge-routines
  ├─ firmware/cardputer/ ......... PlatformIO firmware for the Cardputer-Adv (Node B)
  ├─ seed_memory/ ................ first-run profile facts (seeded via conversation)
  ├─ scripts/backup.sh ........... nightly state backup — the hermes-data volume IS the assistant
  └─ setup/ ...................... the Phosphor Console setup wizard (this README's quick-start)

Hardware

  NODE A ── Raspberry Pi 4/5 (8 GB recommended) · RPi OS Lite 64-bit Bookworm+
  DISPLAY ─ Pimoroni Inky Impression 4"  ·  7-colour ACeP  or  2025 Spectra 6  (agent-owned)
  NODE B ── M5Stack Cardputer-Adv (ESP32-S3)  ·  capture / command / monitor / approve

Host prep (Bookworm): enable SPI + I2C and add dtoverlay=spi0-0cs to /boot/firmware/config.txt (the kernel's CS0 claim conflicts with the Inky library — see docs/hardware-verification.md). Then, from the repo root:

cp .env.example .env    # fill ANTHROPIC_API_KEY + mint the two secrets (or use setup/)
docker compose up -d --build

Ports. :8787 carries the gateway relay and stays on the internal container network; only :8788 — the bearer-guarded Cardputer surface — is published to the LAN. The connector refuses to start unless CONSOLE_BEARER_TOKEN and RELAY_SHARED_SECRET are set (override with CONSOLE_DEV=1 for a loopback-only dev run).

Build phases

  H0 base runtime → H1 display plugin → H2 connector + Cardputer → H3 approvals
  → H4 skills + memory → H5 cron routines → H6 hardening / burn-in

Gates for each phase are in docs/spec.md §8.

Provenance

This repo previously held a 2020 Firebase Hosting placeholder ("pyweb"); it was scrapped in the v2 pivot. History is preserved in git.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages