Show HN: Durable Actor Session Protocol (dasp-protocol.github.io)

11 points by mikehostetler ↗ HN
Hey HN

I'm the author of Jido, an Elixir Actor & Agent SDK. I was building out an Elixir Durable Actor/Agent server and hit a wall regarding communication protocols. I reviewed all the existing protocols; A2A, ACP, AHP and nothing met my needs.

I wanted a language agnostic durable actor session protocol. Agent Host Protocol (AHP) from Microsoft was close, but was centered around "chat".

The future I envision for agents goes far beyond just text chat. Thus, DASP was born.

I'm submitting to HN because I know this is the one place where I'll get real feedback on whether this is an actual need or my tokenmaxxing got the best of me this weekend.

This is a builder protocol. I'll be building out clients beyond Elixir and TypeScript, but plan to only support an Elixir server built around my Jido ecosystem.

8 comments

[ 0.29 ms ] story [ 17.1 ms ] thread
Really great stuff! Cant wait to try it out in my harness!
I’ve been playing a lot with durable agents, can’t say that I know what the final thing should look like but this could be a part of it. For now I have celld in front of sandbox, if I get this right: agent -> dasp -> celld -> sandbox
Is this purely polling, or am I missing how to subscribe to events?
The protocol is transport agnostic - but I'm primarily building it to work over Web Sockets
My question wasn't about transport - it's more do I have to repeatedly poll for events, or can I make a request that effectively subscribes me to a stream of events.
Do you envision an A2A adapter for Jido, with DASP handling durable execution underneath? I’d be curious how an uncertain outcome would map to an A2A task state.
Yes. A2A and ACP adapters would sit above DASP.

The `uncertain` mapping isn't clean. DASP treats it as terminal: the host can't prove whether effects occurred, so it must not retry. A2A's `TASK_STATE_UNSPECIFIED` is indeterminate, but not terminal. The adapter must preserve the DASP outcome in metadata and map it conservatively, likely to `FAILED`.