Home / Input Output / hermes
Nov 23, 1-2 AM (0)
Nov 23, 2-3 AM (0)
Nov 23, 3-4 AM (0)
Nov 23, 4-5 AM (0)
Nov 23, 5-6 AM (0)
Nov 23, 6-7 AM (0)
Nov 23, 7-8 AM (0)
Nov 23, 8-9 AM (0)
Nov 23, 9-10 AM (0)
Nov 23, 10-11 AM (0)
Nov 23, 11-12 PM (0)
Nov 23, 12-1 PM (0)
Nov 23, 1-2 PM (0)
Nov 23, 2-3 PM (0)
Nov 23, 3-4 PM (0)
Nov 23, 4-5 PM (0)
Nov 23, 5-6 PM (0)
Nov 23, 6-7 PM (0)
Nov 23, 7-8 PM (0)
Nov 23, 8-9 PM (0)
Nov 23, 9-10 PM (0)
Nov 23, 10-11 PM (0)
Nov 23, 11-12 AM (1)
Nov 24, 12-1 AM (1)
Nov 24, 1-2 AM (0)
Nov 24, 2-3 AM (0)
Nov 24, 3-4 AM (0)
Nov 24, 4-5 AM (0)
Nov 24, 5-6 AM (2)
Nov 24, 6-7 AM (0)
Nov 24, 7-8 AM (0)
Nov 24, 8-9 AM (0)
Nov 24, 9-10 AM (0)
Nov 24, 10-11 AM (0)
Nov 24, 11-12 PM (1)
Nov 24, 12-1 PM (0)
Nov 24, 1-2 PM (1)
Nov 24, 2-3 PM (0)
Nov 24, 3-4 PM (0)
Nov 24, 4-5 PM (0)
Nov 24, 5-6 PM (0)
Nov 24, 6-7 PM (0)
Nov 24, 7-8 PM (0)
Nov 24, 8-9 PM (0)
Nov 24, 9-10 PM (1)
Nov 24, 10-11 PM (0)
Nov 24, 11-12 AM (0)
Nov 25, 12-1 AM (0)
Nov 25, 1-2 AM (0)
Nov 25, 2-3 AM (0)
Nov 25, 3-4 AM (0)
Nov 25, 4-5 AM (0)
Nov 25, 5-6 AM (0)
Nov 25, 6-7 AM (0)
Nov 25, 7-8 AM (3)
Nov 25, 8-9 AM (1)
Nov 25, 9-10 AM (4)
Nov 25, 10-11 AM (2)
Nov 25, 11-12 PM (13)
Nov 25, 12-1 PM (7)
Nov 25, 1-2 PM (4)
Nov 25, 2-3 PM (0)
Nov 25, 3-4 PM (5)
Nov 25, 4-5 PM (2)
Nov 25, 5-6 PM (0)
Nov 25, 6-7 PM (0)
Nov 25, 7-8 PM (0)
Nov 25, 8-9 PM (0)
Nov 25, 9-10 PM (0)
Nov 25, 10-11 PM (0)
Nov 25, 11-12 AM (1)
Nov 26, 12-1 AM (0)
Nov 26, 1-2 AM (0)
Nov 26, 2-3 AM (0)
Nov 26, 3-4 AM (0)
Nov 26, 4-5 AM (0)
Nov 26, 5-6 AM (0)
Nov 26, 6-7 AM (0)
Nov 26, 7-8 AM (2)
Nov 26, 8-9 AM (2)
Nov 26, 9-10 AM (0)
Nov 26, 10-11 AM (8)
Nov 26, 11-12 PM (0)
Nov 26, 12-1 PM (4)
Nov 26, 1-2 PM (5)
Nov 26, 2-3 PM (0)
Nov 26, 3-4 PM (0)
Nov 26, 4-5 PM (0)
Nov 26, 5-6 PM (0)
Nov 26, 6-7 PM (0)
Nov 26, 7-8 PM (0)
Nov 26, 8-9 PM (0)
Nov 26, 9-10 PM (0)
Nov 26, 10-11 PM (1)
Nov 26, 11-12 AM (1)
Nov 27, 12-1 AM (0)
Nov 27, 1-2 AM (0)
Nov 27, 2-3 AM (0)
Nov 27, 3-4 AM (0)
Nov 27, 4-5 AM (0)
Nov 27, 5-6 AM (0)
Nov 27, 6-7 AM (0)
Nov 27, 7-8 AM (3)
Nov 27, 8-9 AM (6)
Nov 27, 9-10 AM (1)
Nov 27, 10-11 AM (1)
Nov 27, 11-12 PM (0)
Nov 27, 12-1 PM (5)
Nov 27, 1-2 PM (1)
Nov 27, 2-3 PM (0)
Nov 27, 3-4 PM (0)
Nov 27, 4-5 PM (0)
Nov 27, 5-6 PM (0)
Nov 27, 6-7 PM (0)
Nov 27, 7-8 PM (0)
Nov 27, 8-9 PM (0)
Nov 27, 9-10 PM (0)
Nov 27, 10-11 PM (0)
Nov 27, 11-12 AM (0)
Nov 28, 12-1 AM (0)
Nov 28, 1-2 AM (0)
Nov 28, 2-3 AM (0)
Nov 28, 3-4 AM (0)
Nov 28, 4-5 AM (0)
Nov 28, 5-6 AM (0)
Nov 28, 6-7 AM (0)
Nov 28, 7-8 AM (0)
Nov 28, 8-9 AM (0)
Nov 28, 9-10 AM (7)
Nov 28, 10-11 AM (4)
Nov 28, 11-12 PM (2)
Nov 28, 12-1 PM (0)
Nov 28, 1-2 PM (1)
Nov 28, 2-3 PM (2)
Nov 28, 3-4 PM (0)
Nov 28, 4-5 PM (0)
Nov 28, 5-6 PM (0)
Nov 28, 6-7 PM (0)
Nov 28, 7-8 PM (0)
Nov 28, 8-9 PM (0)
Nov 28, 9-10 PM (0)
Nov 28, 10-11 PM (0)
Nov 28, 11-12 AM (0)
Nov 29, 12-1 AM (0)
Nov 29, 1-2 AM (0)
Nov 29, 2-3 AM (0)
Nov 29, 3-4 AM (0)
Nov 29, 4-5 AM (0)
Nov 29, 5-6 AM (0)
Nov 29, 6-7 AM (0)
Nov 29, 7-8 AM (0)
Nov 29, 8-9 AM (0)
Nov 29, 9-10 AM (0)
Nov 29, 10-11 AM (1)
Nov 29, 11-12 PM (0)
Nov 29, 12-1 PM (0)
Nov 29, 1-2 PM (0)
Nov 29, 2-3 PM (0)
Nov 29, 3-4 PM (0)
Nov 29, 4-5 PM (0)
Nov 29, 5-6 PM (0)
Nov 29, 6-7 PM (0)
Nov 29, 7-8 PM (0)
Nov 29, 8-9 PM (0)
Nov 29, 9-10 PM (0)
Nov 29, 10-11 PM (0)
Nov 29, 11-12 AM (0)
Nov 30, 12-1 AM (0)
Nov 30, 1-2 AM (0)
106 commits this week Nov 23, 2025 - Nov 30, 2025
feat(p2p-testing): Add cross-platform build checks and improve error handling
  Enhances the P2P testing infrastructure to ensure cross-platform compatibility
  and provide better error handling for common Docker issues.

  Changes:
  - Add error handling for Docker network and container conflicts in start-nodes.sh
  - Emphasize Earthly (containerized builds) for GLIBC compatibility across different host OS
  - Add comprehensive documentation about cross-platform build requirements
  - Update Dockerfile and docker-compose.yml with clear build instructions
  - Add troubleshooting section for GLIBC errors in README

  The scripts now detect and provide helpful error messages for:
  - Network subnet overlaps with existing Docker networks
  - Container name conflicts from previous runs
  - Guidance to use Earthly builds instead of local cargo builds

  This ensures the P2P testing environment works reliably across different
  development environments (Fedora, Ubuntu, macOS, etc.) by building binaries
  in a controlled container environment that matches the Docker runtime GLIBC version.
feat(hermes): Implement IPFS publishing workflow (#694)
* feat: implement doc-sync channel::post API for issue #628

- Add channel::post(document_bytes) API as requested
- Integrate hermes-ipfs library for IPFS operations
- Add HTTP endpoints for testing (/api/doc-sync/*)
- Configure HTTP gateway routing
- Implement IPFS add, pin, and PubSub publish workflow

* feat: implement doc-sync channel::post API for issue #628

- Add channel::post(document_bytes) API as requested
- Integrate hermes-ipfs library for IPFS operations
- Add HTTP endpoints for testing (/api/doc-sync/*)
- Configure HTTP gateway routing
- Implement IPFS add, pin, and PubSub publish workflow

* hermes ipfs version

* fix: enable WASM compilation for doc-sync module and add host stubs

  WASM compilation fixes:
  - Made tokio runtime features conditional (rt-multi-thread only for non-WASM)
  - Added separate WASM/native implementations using futures::executor for WASM
  - Conditionally compile Runtime usage and block_on calls

  Host implementation:
  - Replaced panicking todo!() with warning messages and stub return values
  - Added Resource stub creation for SyncChannel::new()
  - Functions now print warnings but don't crash runtime

  This allows the doc-sync module to compile for wasm32-wasip2 targets and
  run without panicking, though full functionality requires proper host
  implementation.

* Remove all cfg attributes and consolidate WASM/non-WASM code paths into single implementations using futures::executor. Simplify HTTP handlers and reduce complexity to clearly
   demonstrate the 4-step workflow.

* refactor(doc-sync): simplify for demo workflow

   Remove conditional compilation, OnceLock pattern, and unnecessary complexity to clearly show the 4-step IPFS PubSub workflow.

* refactor(doc-sync): use WIT bindings directly for demo

  Replace async hermes-ipfs library with direct WIT function calls (file_add, file_pin, pubsub_publish). Remove conditional compilation and async dependencies to simplify the 4-step
  workflow demo.

* refactor(doc-sync): use WIT bindings directly for demo

  Replace async hermes-ipfs library with direct WIT function calls (file_add, file_pin, pubsub_publish). Remove conditional compilation and async dependencies to simplify the 4-step
  workflow demo.

* refactor(doc-sync): integrate with PR #691 subscription flow

  Replace async hermes-ipfs library with synchronous WIT bindings (file_add, file_pin, pubsub_publish, pubsub_subscribe). Add actual channel subscription in SyncChannel::new() and
  document complete pub/sub flow with PR #691 infrastructure.

  Changes:
  - Use WIT IPFS functions directly instead of async library
  - Call pubsub_subscribe() to register DocSync subscriptions
  - Document how on_new_doc events are triggered by PR #691
  - Remove conditional compilation and async dependencies
  - Show clear 4-step workflow: add → pin → validate → publish

* docs(doc-sync): document PR #691 integration requirements

  Add comprehensive comments explaining PR #691 requirement for subscription event routing. Document the complete pub/sub flow, what works now vs what needs PR #691, and how to
  integrate when it merges

* fix(doc-sync): import GuestSyncChannel trait and clarify PR #691 comment

  Fix compilation error and clarify that publishing to PubSub works now; PR #691 is only needed to route incoming messages to event handlers.

* update docs

* refactor(doc-sync): Focus module on publishing workflow only

  Remove subscription logic and simplify documentation. Module now
  demonstrates only the 4-step publishing workflow: file_add, file_pin,
  pre-publish validation, and pubsub_publish.

* fmt

* refactor(doc-sync): Move post logic to host

  Execute the 4-step publishing workflow (file_add, file_pin, pre-publish,
  pubsub_publish) on the host side instead of in the WASM module. Reduces
  boundary crossings from 6 to 2 for better performance.

* fmt

* fmt

* fix(doc-sync): Fix compilation errors

  - Fix SyncChannel resource import and usage
  - Update channel::post() to call host implementation correctly

* refactor(doc-sync): Replace eprintln with tracing

  Use tracing macros (info/warn/error) instead of eprintln for logging
  in doc-sync host implementation.

* refactor(doc-sync): Replace eprintln with tracing

  Use tracing macros (info/warn/error) instead of eprintln for logging
  in doc-sync host implementation.

* fmt

* refactor(doc-sync): Extract constants and improve error logging

  - Add DOC_SYNC_TOPIC and DOC_SYNC_CHANNEL constants
  - Add error logging to id_for() method

* refactor(doc-sync): Improve error logging and remove redundant conversions

  - Log actual error details instead of discarding with
  - Remove redundant .to_string() on CID response
  - Add error logging for failed post operations

* fmt
feat(hermes): add ipfs connection opening to doc_sync (#685)
* feat(hermes): add ipfs connection opening to doc_sync

* chore(hermes): rafactoring

* feat(hermes): add doc-sync opening test

* fix(CI): fix spelling

* fix(hermes): fix test

* fix(CI): ignore some lints

* chore(hermes): update lock file

* fix(hermes): change document id to cbor encoded CID

* chore(hermes): remove unused imports

* fix(hermes): forbid usage of sync channel resource after close

* chore(hermes): fix lints

* chore(hermes): update code so that it uses 4 byte hash

* chore(hermes): add comment