Home / Input Output / hermes
Dec 08, 3-4 PM (0)
Dec 08, 4-5 PM (0)
Dec 08, 5-6 PM (0)
Dec 08, 6-7 PM (0)
Dec 08, 7-8 PM (0)
Dec 08, 8-9 PM (0)
Dec 08, 9-10 PM (0)
Dec 08, 10-11 PM (0)
Dec 08, 11-12 AM (0)
Dec 09, 12-1 AM (0)
Dec 09, 1-2 AM (0)
Dec 09, 2-3 AM (0)
Dec 09, 3-4 AM (0)
Dec 09, 4-5 AM (0)
Dec 09, 5-6 AM (0)
Dec 09, 6-7 AM (0)
Dec 09, 7-8 AM (0)
Dec 09, 8-9 AM (0)
Dec 09, 9-10 AM (1)
Dec 09, 10-11 AM (0)
Dec 09, 11-12 PM (0)
Dec 09, 12-1 PM (0)
Dec 09, 1-2 PM (1)
Dec 09, 2-3 PM (0)
Dec 09, 3-4 PM (0)
Dec 09, 4-5 PM (0)
Dec 09, 5-6 PM (0)
Dec 09, 6-7 PM (0)
Dec 09, 7-8 PM (0)
Dec 09, 8-9 PM (0)
Dec 09, 9-10 PM (2)
Dec 09, 10-11 PM (0)
Dec 09, 11-12 AM (1)
Dec 10, 12-1 AM (0)
Dec 10, 1-2 AM (0)
Dec 10, 2-3 AM (0)
Dec 10, 3-4 AM (0)
Dec 10, 4-5 AM (0)
Dec 10, 5-6 AM (1)
Dec 10, 6-7 AM (2)
Dec 10, 7-8 AM (2)
Dec 10, 8-9 AM (1)
Dec 10, 9-10 AM (0)
Dec 10, 10-11 AM (1)
Dec 10, 11-12 PM (0)
Dec 10, 12-1 PM (1)
Dec 10, 1-2 PM (0)
Dec 10, 2-3 PM (0)
Dec 10, 3-4 PM (0)
Dec 10, 4-5 PM (2)
Dec 10, 5-6 PM (0)
Dec 10, 6-7 PM (0)
Dec 10, 7-8 PM (0)
Dec 10, 8-9 PM (0)
Dec 10, 9-10 PM (0)
Dec 10, 10-11 PM (2)
Dec 10, 11-12 AM (0)
Dec 11, 12-1 AM (1)
Dec 11, 1-2 AM (0)
Dec 11, 2-3 AM (0)
Dec 11, 3-4 AM (0)
Dec 11, 4-5 AM (0)
Dec 11, 5-6 AM (0)
Dec 11, 6-7 AM (0)
Dec 11, 7-8 AM (0)
Dec 11, 8-9 AM (0)
Dec 11, 9-10 AM (1)
Dec 11, 10-11 AM (2)
Dec 11, 11-12 PM (3)
Dec 11, 12-1 PM (0)
Dec 11, 1-2 PM (0)
Dec 11, 2-3 PM (0)
Dec 11, 3-4 PM (0)
Dec 11, 4-5 PM (0)
Dec 11, 5-6 PM (0)
Dec 11, 6-7 PM (0)
Dec 11, 7-8 PM (0)
Dec 11, 8-9 PM (0)
Dec 11, 9-10 PM (0)
Dec 11, 10-11 PM (0)
Dec 11, 11-12 AM (0)
Dec 12, 12-1 AM (0)
Dec 12, 1-2 AM (0)
Dec 12, 2-3 AM (0)
Dec 12, 3-4 AM (0)
Dec 12, 4-5 AM (0)
Dec 12, 5-6 AM (0)
Dec 12, 6-7 AM (0)
Dec 12, 7-8 AM (0)
Dec 12, 8-9 AM (0)
Dec 12, 9-10 AM (0)
Dec 12, 10-11 AM (0)
Dec 12, 11-12 PM (0)
Dec 12, 12-1 PM (0)
Dec 12, 1-2 PM (0)
Dec 12, 2-3 PM (0)
Dec 12, 3-4 PM (0)
Dec 12, 4-5 PM (0)
Dec 12, 5-6 PM (0)
Dec 12, 6-7 PM (0)
Dec 12, 7-8 PM (0)
Dec 12, 8-9 PM (0)
Dec 12, 9-10 PM (0)
Dec 12, 10-11 PM (0)
Dec 12, 11-12 AM (0)
Dec 13, 12-1 AM (0)
Dec 13, 1-2 AM (0)
Dec 13, 2-3 AM (0)
Dec 13, 3-4 AM (0)
Dec 13, 4-5 AM (0)
Dec 13, 5-6 AM (0)
Dec 13, 6-7 AM (0)
Dec 13, 7-8 AM (0)
Dec 13, 8-9 AM (0)
Dec 13, 9-10 AM (0)
Dec 13, 10-11 AM (0)
Dec 13, 11-12 PM (0)
Dec 13, 12-1 PM (0)
Dec 13, 1-2 PM (0)
Dec 13, 2-3 PM (0)
Dec 13, 3-4 PM (0)
Dec 13, 4-5 PM (0)
Dec 13, 5-6 PM (0)
Dec 13, 6-7 PM (0)
Dec 13, 7-8 PM (0)
Dec 13, 8-9 PM (0)
Dec 13, 9-10 PM (0)
Dec 13, 10-11 PM (0)
Dec 13, 11-12 AM (0)
Dec 14, 12-1 AM (0)
Dec 14, 1-2 AM (0)
Dec 14, 2-3 AM (0)
Dec 14, 3-4 AM (0)
Dec 14, 4-5 AM (0)
Dec 14, 5-6 AM (0)
Dec 14, 6-7 AM (0)
Dec 14, 7-8 AM (0)
Dec 14, 8-9 AM (0)
Dec 14, 9-10 AM (0)
Dec 14, 10-11 AM (0)
Dec 14, 11-12 PM (0)
Dec 14, 12-1 PM (0)
Dec 14, 1-2 PM (0)
Dec 14, 2-3 PM (0)
Dec 14, 3-4 PM (0)
Dec 14, 4-5 PM (0)
Dec 14, 5-6 PM (0)
Dec 14, 6-7 PM (0)
Dec 14, 7-8 PM (0)
Dec 14, 8-9 PM (0)
Dec 14, 9-10 PM (0)
Dec 14, 10-11 PM (0)
Dec 14, 11-12 AM (0)
Dec 15, 12-1 AM (0)
Dec 15, 1-2 AM (0)
Dec 15, 2-3 AM (0)
Dec 15, 3-4 AM (0)
Dec 15, 4-5 AM (0)
Dec 15, 5-6 AM (0)
Dec 15, 6-7 AM (0)
Dec 15, 7-8 AM (0)
Dec 15, 8-9 AM (0)
Dec 15, 9-10 AM (0)
Dec 15, 10-11 AM (0)
Dec 15, 11-12 PM (5)
Dec 15, 12-1 PM (4)
Dec 15, 1-2 PM (8)
Dec 15, 2-3 PM (2)
Dec 15, 3-4 PM (0)
43 commits this week Dec 08, 2025 - Dec 15, 2025
docs: improve clarity and fix clippy warnings
  - Explain mesh_n, bootstrap peers (DNS analogy), and 5-step post workflow
  - Fix confusing DHT log: need 2+ waiting for ourselves to appear
  - Add backticks around PubSub and function names (clippy doc-markdown)
  - Simplify TROUBLESHOOTING reset (quickstart handles rebuilds)
  - Clarify quickstart uses existing binaries (run just build-all after code changes)
docs: improve clarity of P2P networking comments
  - Explain mesh_n parameter and its effect on Gossipsub operations
  - Add TL;DR sections to bootstrap discovery and PubSub warnings
  - Clarify cross-platform builds (cargo vs Earthly) and GLIBC compatibility
  - Add DNS analogy for bootstrap peers concept
  - List explicit 5-step post document workflow
  - Explain logging levels (debug = P2P diagnostics, info = app events)
docs: improve clarity of P2P networking comments
  - Explain mesh_n parameter and its effect on Gossipsub operations
  - Add TL;DR sections to bootstrap discovery and PubSub warnings
  - Clarify cross-platform builds (cargo vs Earthly) and GLIBC compatibility
  - Add DNS analogy for bootstrap peers concept
  - List explicit 5-step post document workflow
  - Explain logging levels (debug = P2P diagnostics, info = app events)
docs(p2p-testing): add custom test examples and fix ANSI color output
  - Add Writing Custom Tests section with examples (connectivity, resilience, throughput)
  - Include template and best practices for extending justfile tests
  - Fix ANSI escape codes not rendering (add -e flag to echo commands)
  - Note: proper API testing framework planned when endpoints finalized
docs(ipfs): add conceptual comments for P2P architecture and PubSub constraints
  - Explain what bootstrap peers are and their role in network formation
  - Document retry strategy for bootstrap connections
  - Add critical warning: public IPFS nodes cannot be used for Hermes PubSub
  - Explain why DHT server mode is required for Gossipsub mesh formation
  - Document auto-subscription strategy to avoid cold start problem

  Emphasizes the key constraint that Gossipsub requires custom Hermes bootstrap
  peers since public IPFS nodes don't subscribe to application-specific topics.
docs(ipfs): add conceptual comments for P2P architecture and PubSub constraints
  - Explain what bootstrap peers are and their role in network formation
  - Document retry strategy for bootstrap connections
  - Add critical warning: public IPFS nodes cannot be used for Hermes PubSub
  - Explain why DHT server mode is required for Gossipsub mesh formation
  - Document auto-subscription strategy to avoid cold start problem

  Emphasizes the key constraint that Gossipsub requires custom Hermes bootstrap
  peers since public IPFS nodes don't subscribe to application-specific topics.
refactor(ipfs): extract helper functions and eliminate hardcoded values
  - Add env_var_or() helper to eliminate duplicate env var parsing
  - Extract configure_listening_address() and connect_to_bootstrap_peers() from init()
  - Extract constants: IPFS_DATA_DIR, KEYPAIR_FILENAME, DEFAULT_APP_NAME, DEFAULT_MESH_TOPIC
  - Simplify retry_bootstrap_connections() with early returns and cleaner logic
refactor: eliminate hardcoded values and code duplication
  - Extract MESSAGE_PREVIEW_MAX_LEN constant and create format_message_preview() helper
  - Make IPFS listen port configurable via IPFS_LISTEN_PORT env var (default: 4001)
  - Make retry settings configurable via IPFS_RETRY_INTERVAL_SECS and IPFS_MAX_RETRIES
  - Document exponential backoff strategy for DHT provider queries

  Improves maintainability and configurability without changing behavior.
docs(p2p-testing): enhance clarity and add cross-platform support
  - Add TL;DR quickstart and fast restart workflows
  - Auto-detect platform for builds (Linux cargo, Mac/Windows Earthly)
  - Fix non-existent command references and outdated line numbers
  - Add comprehensive inline comments to docker-compose
  - Expand bootstrap peer discovery docs for production deployment
docs(p2p): improve docs clarity and add cross-platform build auto-detection
  - Restructure README with TL;DR for minimal cognitive load
  - Add comprehensive comments to docker-compose.yml and Dockerfile
  - Auto-detect platform in build commands (Linux uses cargo, Mac/Windows uses Earthly)
  - Fix outdated references and broken commands
  - Add fast restart workflow documentation
  - Add GitHub Actions integration TODOs
docs(p2p): improve documentation accuracy and usability
  Restructure README with TL;DR and fast restart workflows. Fix outdated
  command references (dashboard, test-pubsub-core) and clarify prerequisites
  (Rust toolchain, not Earthly). Remove duplicate entries and confusing
  peer ID examples. Add TODOs for GitHub Actions integration.

  Next task: integrate CI workflow into GitHub Actions runners for automated PR testing.
refactor(p2p): Make test-pubsub test actual propagation and add millisecond timing
  Update test-pubsub to publish messages and verify reception on all nodes (minimal output for CI), matching test-pubsub-propagation functionality. Remove redundant test-pubsub-core
  command.

  Improve timing precision from seconds to milliseconds using date +%s%3N, showing actual sub-second propagation delays (0.234s instead of 0s) in visualization and final status.
refactor(p2p): Simplify testing infrastructure by removing redundant commands
   Remove dashboard and health-check commands (~195 lines) since test-pubsub-propagation
   already validates all necessary functionality (nodes running status, mesh connectivity
   via message propagation, gossipsub activity via successful delivery, end-to-end P2P).

   Fix HTTP endpoint health check to include required Host header for Hermes gateway.
refactor(p2p): Add helper functions and improve test maintainability
  - Add 7 reusable helper functions to eliminate code duplication
  - Refactor test-pubsub-core using helpers (65 → 35 lines)
  - Standardize color code format across 8 recipes
  - Add curl command explanation to PubSub test visualization
  - Fix documentation references for test-pubsub-propagation

  No functional changes. Improves maintainability and readability.
feat(p2p-testing): enhance UX with visualization and clearer documentation
  - Add visual HTTP POST flow diagram explaining why Node 1 is publisher
  - Enhance test-pubsub-propagation with 4 insight sections:
    * Propagation timeline with receive timestamps
    * Network statistics (message size, success rate, latency)
    * Live log preview showing PubSub activity
    * Peer connection matrix showing full mesh
  - Add educational explanations of Gossipsub, PubSub topics, and CIDs
  - Add workflow diagram to README showing daily command flow
  - Clarify interactive mode (start) vs CI mode (start-ci) throughout docs
  - Emphasize peer ID lifecycle: preserved with 'stop', regenerated after 'clean'
  - Update help command with important notes section

  Makes P2P testing infrastructure more accessible and educational for new users.