# Haskell-agent: An experimental agent harness in haskell

**URL:** <https://discourse.haskell.org/t/haskell-agent-an-experimental-agent-harness-in-haskell/14621>\
**Category:** Announcements\
**Created:** [August 27, 2026, 8:21pm UTC](https://discourse.haskell.org/t/haskell-agent-an-experimental-agent-harness-in-haskell/14621 "2026-08-27T20:21:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![mpscholten](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpscholten/32/1441_2.png) [@mpscholten](https://discourse.haskell.org/u/mpscholten)\
**Post date:** [August 27, 2026, 8:21pm UTC](https://discourse.haskell.org/t/haskell-agent-an-experimental-agent-harness-in-haskell/14621/1 "2026-08-27T20:21:08Z")

</div>

Hi all,

I’ve been building haskell-agent, a new agent harness written in haskell (naming things is still an unsolved problem :D).

A coding agent is in large part a concurrent streaming interpreter of a web socket DSL. With interactive UI, parallel subagents etc. there’s a lot of mutable concurrent state and IO. A problem space well suited for haskell.

key features:

- works with multiple codex, claude, grok subscriptions (with account failover when your usage limit is reached)
- experimental codemod via a persistent ghci or bun
- postgres based memory for type safe state (e.g. if you ask the agent to e..g track your todos, it can create a todos table in the db)
- subagents (coordinated via STM)
- voice dictation

It’s already usable as a daily driver. For remote coding you can connect it to telegram with the builtin telegram nixos service (just ask the agent about it).

With nix you can try it out via this one liner:

```haskell
nix run "github:digitallyinduced/haskell-agent"

```

> **[GitHub - digitallyinduced/haskell-agent: an agent harness is just a monoid in the category...](https://github.com/digitallyinduced/haskell-agent)**
>
> an agent harness is just a monoid in the category of endofunctors

The intersection of purely functional programming, type systems and LLMs seems to be an underexplored space, that might yield interesting solutions for reliable and secure agents.

---

<div class="post-metadata">

**Author:** ![harryprayiv](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/harryprayiv/32/3680_2.png) [@harryprayiv](https://discourse.haskell.org/u/harryprayiv)\
**Post date:** [August 27, 2026, 9:03pm UTC](https://discourse.haskell.org/t/haskell-agent-an-experimental-agent-harness-in-haskell/14621/2 "2026-08-27T21:03:45Z")

</div>

> [@mpscholten](#):
>
> intersection of purely functional programming, type systems and LLMs seems to be an underexplored space, that might yield interesting solutions for reliable and secure agents.

Have a look at Grace. This area is actually not as underexplored as most would have you believe thanks to the brilliant work of @Gabriella439 [GitHub - Gabriella439/grace: A prompt engineering functional programming language · GitHub](https://github.com/Gabriella439/grace)

IMO, if someone can break Grace free from its current OpenAI-specific harness, it could be a VERY powerful system for building deterministic, **reliable** agentic workflows using the same guardrails and data compartmentalization we swear by in the purely functional world.

I think I might have passed this project over had I not seen this amazing @Zelenya interview where @Gabriella439 demos it:

[![](https://img.youtube.com/vi/lTEP0zrjPwY/maxresdefault.jpg "Beyond agentic coding with Grace (w/ Gabriella Gonzalez)") ](https://www.youtube.com/watch?v=lTEP0zrjPwY)

@

---

<div class="post-metadata">

**Author:** ![mchav](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mchav/32/5143_2.png) [@mchav](https://discourse.haskell.org/u/mchav)\
**Post date:** [August 27, 2026, 9:21pm UTC](https://discourse.haskell.org/t/haskell-agent-an-experimental-agent-harness-in-haskell/14621/3 "2026-08-27T21:21:55Z")

</div>

Nice. I’ll take a look at the repo. I’ve recently started working on making a small set of agent tools to interact with a notebook and using that to come up with some design ideas of how to do this at scale.

Just blogged about it here: [Context complexity: what is the Big-O of an agent API? – Michael Chavinda – A collection of my thoughts on the various topics I find myself interested in.](https://mchav.github.io/context-complexity/)
