{ "name": "Echo", "description": "A step protocol toy: watch a repo event stream, or hold an iroh session to a guest, streaming what it prints.", "session": "echo", "actions": [ { "entry": "watch", "label": "Watch", "description": "Subscribes to com.atproto.sync.subscribeRepos at a service, stops after limit messages or seconds.", "fields": [ { "key": "service", "label": "Relay or PDS (https origin)" }, { "key": "limit", "label": "Messages" }, { "key": "seconds", "label": "Seconds" } ] }, { "entry": "session", "label": "iroh session", "description": "Opens com.fedfork.exec.iroh.connect as a session: ssh command (or a raw alpn stream) output as it arrives.", "fields": [ { "key": "ticket", "label": "iroh ticket" }, { "key": "command", "label": "Command" } ] }, { "entry": "connect", "label": "iroh exec", "description": "One com.fedfork.exec.iroh.connect call (ssh command with stdin, or a raw alpn exchange); returns its output.", "fields": [ { "key": "ticket", "label": "iroh ticket" }, { "key": "command", "label": "Command" } ] } ], "calls": [ "com.atproto.repo.describeRepo", "com.atproto.sync.subscribeRepos", "com.fedfork.exec.iroh.connect" ], "hooks": [ { "nsid": "com.fedfork.exec.iroh.connect", "required": true, "entries": ["session", "connect"], "reason": "session and connect dial the guest over iroh: a host built without iroh refuses them at load" } ] }