• v0.2.0 c337cdba38

    agorise released this 2026-08-29 01:18:50 +00:00 | 15 commits to main since this release

    hidden-rpc v0.2.0

    Your node now heals its own Tor and I2P reachability. If a transport goes
    dark — whether the daemon crashed or is merely stuck (still active (running)
    but not serving) — the node detects it and repairs it on its own, per transport,
    with no reboot and no SSH. This closes the gap behind the oldpc incident: after a
    Wi-Fi→Ethernet swap, i2pd rebuilt its tunnels in seconds but tor stayed "running"
    while its onion silently went dark for an hour. Process liveness was never the
    right signal; end-to-end reachability is.

    Already-synced nodes are unaffected — this only adds a background self-healer.

    What's new in v0.2.0

    • End-to-end self-probing, per transport. The node dials its own .onion
      and .b32.i2p back through the real circuit/tunnel and makes a live RPC call —
      the only check that catches a "stuck but running" daemon.
    • Transport-down vs RPC-down. A loopback RPC check gates every repair, so a
      down RPC never triggers a pointless tor/i2pd restart.
    • Graduated, least-disruptive repair. Gentle nudge → restart → escalate, each
      with a grace window sized to real onion-descriptor / I2P-tunnel rebuild time.
    • Network-change awareness. An interface/route/IP change (the oldpc trigger)
      forces an immediate re-probe of both transports instead of waiting a cycle.
    • Independent Tor and I2P supervision. A healthy transport never masks a
      broken one — the exact way the oldpc outage stayed invisible.
    • Flap protection. An hourly restart cap and a per-episode cycle limit; an
      unrecoverable transport backs off to degraded instead of restart-looping.
    • Self-reported status. hidden-rpc-transport-status (and --status,
      --transports) show each transport as healthy / recovering / degraded
      and when it last auto-recovered. Morphit's directory can read this to show
      recovery state authoritatively rather than guessing.
    • Runs itself, safely. Installed as a systemd service that is itself
      restarted if it ever dies, and it only ever restarts tor/i2pd — nothing else.

    The self-healer installs automatically on your next hidden-rpc-setup.sh run,
    once the node has a Tor or I2P address. Tunables (probe cadence, grace windows,
    restart caps) live in /etc/hidden-rpc/supervisor.conf.

    Carried over: optional --name <handle>; --watch replay animation; trustless
    on-chain bootstrap; --mirror-only; runnable command paths.

    Minimum requirements

    • Operating system: 64-bit Linux in the Debian / Ubuntu / Linux Mint family
      (uses apt). Tested on Linux Mint 22 and Ubuntu 24.04.

    • Architecture: amd64 / x86_64. ARM is not supported yet.

    • Memory: ~4 GB RAM minimum (~3 GB used by the node); 8 GB comfortable.

    • Free disk space: about 100 GB for a first-time setup; far less later. An
      SSD is strongly recommended — the one-time replay is far faster on an SSD.

    • Internet: a wired LAN / Ethernet connection is strongly recommended. A
      node on Wi-Fi only sees roughly a 50% successful connection rate; on
      Ethernet you get 100% connectivity, which is what an RPC node actually needs
      to stay reachable and keep re-publishing its hidden endpoints. Wi-Fi will run,
      but expect the transport self-healer to spend more time recovering and your
      uptime to suffer. A serving node keeps a clearnet p2p connection on port 1776 to
      stay in sync; only the RPC reads are hidden over Tor and I2P.

    • Installed automatically if missing: Docker, Tor, i2pd, and small tools.

    • Repository: https://git.agorise.net/agorise/hidden-rpc

    • License: AGPL-3.0-or-later

    Downloads