We've all seen how powerful CLI-based coding tools are. One big reason, I think, is that they let you chain and pipe operations to get things done efficiently. Want to do some crazy analysis on a CSV? One wizardry-looking bash invocation and boom, you got it. That's something we usually can't replicate when we build a web-based, tool-calling ReAct agent for end customers.
Sure, we can attach a code execution environment to the agent, but in most cases those are expensive and complicated to manage - and if the agent feels like it, it can do things you really didn't intend once it has that much rope.
Plain tool-calling is too limiting, full code execution is too powerful (and expensive). So what if there was a middle ground? That's where Dagic comes in. (Like "magic," but starts with DAG :D - I'd considered cooler names like Dagger, Dagon, etc., but they were mostly taken.)
I'd frame Dagic more as an experiment than a solution. It's a very minimal language with just enough grammar to define a chain of operations. The host environment defines typed functions; the agent wires them together using Dagic. A DAG gets constructed from the code and executed concurrently.
Hi HN, author here.
We've all seen how powerful CLI-based coding tools are. One big reason, I think, is that they let you chain and pipe operations to get things done efficiently. Want to do some crazy analysis on a CSV? One wizardry-looking bash invocation and boom, you got it. That's something we usually can't replicate when we build a web-based, tool-calling ReAct agent for end customers.
Sure, we can attach a code execution environment to the agent, but in most cases those are expensive and complicated to manage - and if the agent feels like it, it can do things you really didn't intend once it has that much rope.
Plain tool-calling is too limiting, full code execution is too powerful (and expensive). So what if there was a middle ground? That's where Dagic comes in. (Like "magic," but starts with DAG :D - I'd considered cooler names like Dagger, Dagon, etc., but they were mostly taken.)
I'd frame Dagic more as an experiment than a solution. It's a very minimal language with just enough grammar to define a chain of operations. The host environment defines typed functions; the agent wires them together using Dagic. A DAG gets constructed from the code and executed concurrently.
Feedback, criticism, and suggestions welcome.