|
| 1 | +--- |
| 2 | +layout: blog |
| 3 | +title: Reading the Swamp |
| 4 | +description: "Day two with Swamp: I climbed out of the mud and actually read the docs on swamp.club — and the framework for giving AI agents typed, versioned, deterministic memory turned out to be rather brilliant." |
| 5 | +--- |
| 6 | + |
| 7 | +Two days ago I put my hands in the [Swamp](https://swamp.club){:target="_blank"} and they got, predictably, very dirty. |
| 8 | + |
| 9 | +Then I did something radical, revolutionary, somehow epic. |
| 10 | + |
| 11 | +I read the ***ing manual. |
| 12 | + |
| 13 | +No. |
| 14 | + |
| 15 | +It's a lie, I didn't. |
| 16 | + |
| 17 | +I forced an innocent AI to read it and summarize and explain the whole thing with the patience only AIs can have nowadays. |
| 18 | + |
| 19 | +This post, written in 4 hands, well, two hands and a bunch of tokens, (you will never know, nor care, who wrote what), is the final, public, of such a journey into the swamp. |
| 20 | + |
| 21 | +## The map I should have read first |
| 22 | + |
| 23 | +Day one was hands-in-the-mud. I installed the tool, pointed an agent at it, and spent several hours and an indecent amount of tokens fighting a bug which could be avoided just by using a better name. Btw, the bug has already been corrected and the fix released (thank you Paul), what a time to be alive! |
| 24 | + |
| 25 | +Day two I climbed back onto dry land, wiped my glasses (wait, I don't have glasses :-> ), and actually looked at the map. |
| 26 | + |
| 27 | +The map, it turns out, is good. Suspiciously good. There is a whole [manual](https://swamp.club){:target="_blank"} on swamp.club, neatly organized into tutorials, how-to guides, reference and explanation, written in a dry, essential, effective and ultimately boring style (had to say that also here, Adam :). |
| 28 | + |
| 29 | +The homepage line that meant absolutely nothing to me on day one — *"deterministic automation for AI agents"* — finally clicked. So let me try to explain it, naively, the way you explain a thing the morning after you finally got it. |
| 30 | + |
| 31 | +## What I finally understood |
| 32 | + |
| 33 | +Here is the problem Swamp is staring at. |
| 34 | + |
| 35 | +An AI agent is a brilliant amnesiac improviser. |
| 36 | + |
| 37 | +Every session it re-derives the world from scratch, does something genuinely clever, and then the clever thing dissolves into the chat history. |
| 38 | + |
| 39 | +Capabilities lost in chat, like tears in rain. |
| 40 | + |
| 41 | +One-off scripts that rot. |
| 42 | + |
| 43 | +Ephemeral logs nobody can query. |
| 44 | + |
| 45 | +Credentials scattered wherever the agent felt like leaving them. |
| 46 | + |
| 47 | +I know this dance well. I *am* the continuity in that dance — me, my head, and a growing pile of `CLAUDE.md` files. |
| 48 | + |
| 49 | +Swamp's bet is to give the agent a **substrate** instead. |
| 50 | + |
| 51 | +A place where the work it does becomes typed, versioned, queryable, composable — and therefore survives. The agent stops winging it and starts *building* things. |
| 52 | + |
| 53 | +It is, more or less, the difference between asking a consultant to solve your problem and asking them to leave behind a reusable module. |
| 54 | + |
| 55 | +For a man who spent twenty years preaching reusability in the Puppet world, that sentence clicked on day one, but I didn't full realized that immediately. |
| 56 | + |
| 57 | +## Six creatures living in the swamp |
| 58 | + |
| 59 | +The framework decomposes automation into a handful of primitives. |
| 60 | + |
| 61 | +They compose. |
| 62 | + |
| 63 | +Of course they compose — that is the whole point — but it still made me happy to see it. |
| 64 | + |
| 65 | +**Models.** Typed interfaces to anything. *"Zod schemas in, validated data out."* A model is a typed interaction with an external system: it has a type — something like `command/shell` or `@swamp/aws/ec2/vpc` — methods such as `create`, `sync`, `delete`, and typed input and output schemas. |
| 66 | + |
| 67 | +The detail that made me sit up: reusable *logic* lives in TypeScript, while *configuration* lives in YAML. So the agent doesn't write code to configure things — it reasons over data. |
| 68 | + |
| 69 | +Anyone who has agonised over "should the AI write code here, or data?" feels that one in the spine. |
| 70 | + |
| 71 | +It is the Puppet resource abstraction layer, reborn for agents. |
| 72 | + |
| 73 | +**Workflows.** Multi-step DAGs of jobs, with parallel steps, and — this is the good bit — they nest. Steps chain data from earlier steps with CEL expressions, so the output of one job feeds the input of the next, typed all the way. It is a pipeline, except every edge is typed and every node leaves an immutable, versioned artifact behind. My day-one naming bug lived exactly here, in a model the loader refused to discover. Now I understand why the loader has opinions. |
| 74 | + |
| 75 | +**Vaults.** Encrypted secret storage, referenced by expression, resolved at runtime rather than at planning time. Swappable providers: local encryption for me on my own, AWS Secrets Manager or 1Password for a team. Boring. I mean that as a compliment. Secret management that is boring is secret management done right. |
| 76 | + |
| 77 | +**Extensions.** The thing I face-planted into on day one. Extensions package reusable components — models, vault providers, execution drivers, datastores, reports — and you publish them to a registry where they become *"a full citizen immediately"*. On day one this scared me, and it still does a little. On day two I also see it for what it is: a package manager for agent capabilities. |
| 78 | + |
| 79 | +And no, Matteo, it's not just yet another collection of skills, hope this post will help in clarifying , what I not able to explain correctly. |
| 80 | + |
| 81 | +**Reports.** Structured analysis after every run, in Markdown *and* JSON. The agent doesn't just do the thing — it tells you what it did, in a format a human and another machine can both read. An audit trail as a first-class citizen, not an afterthought. |
| 82 | + |
| 83 | +**Skills.** Markdown documents that teach the agent how to use Swamp, loaded on demand when a trigger fires. So the agent learns Swamp *from* Swamp. The framework documents itself to its own operator. Mildly meta. Slightly unsettling. Mostly brilliant. |
| 84 | + |
| 85 | +## Not only for infrastructures |
| 86 | + |
| 87 | +On day one I kept asking the same nervous question: *what repo?* Infrastructure repo? Software repo? Any repo? |
| 88 | + |
| 89 | +The honest answer the docs gave me is: **any repeatable, multi-step thing.** |
| 90 | + |
| 91 | +Infrastructure is the obvious case — inventory, provisioning, an AMI lookup feeding an EC2 model. Expected. Adam Jacob, System Initiative — of course it does infrastructure. |
| 92 | + |
| 93 | +But the moment you stop reading "automation for AI agents" as "infrastructure" and start reading it as *"anything an agent currently does ad hoc in a chat window"*, the thing gets a great deal bigger. |
| 94 | + |
| 95 | +Webframp, wrote a [enlightening post](https://webframp.com/posts/swamp-beyond-infrastructure/){:target="_blank"} about this, give it a look. |
| 96 | + |
| 97 | +Use cases are whatever you do more than once with an agent (or you should/may do with it). |
| 98 | + |
| 99 | +Think about automated transcript generation of a podcast episode, extraction of summaries, tags, generation of posts, web pages and all the corollary stuff. |
| 100 | + |
| 101 | +Or security operations — key rotation. Rotate an API key, update the vault, notify the team. Three steps, secrets involved, must be repeatable, must be auditable. Swamp's home turf. |
| 102 | + |
| 103 | +Or data remediation — a messy media library, a directory of inconsistently named files, a spreadsheet that needs reconciling. Boring, repetitive, the kind of job you hand to an agent once and can then never reproduce. |
| 104 | + |
| 105 | +Or the dull business automations — invoicing, monthly reports, the recurring thing you always forget until it is late. |
| 106 | + |
| 107 | +The pattern underneath all of them is the same. The moment you frame a task as *"a workflow of typed models"* instead of *"a thing I ask the agent to improvise again"*, it stops being a one-off and becomes an **asset**. Reusability, abstraction, repeatability, traceability — my day-one sacred principles — except now they apply to what the AI does, not only to what I write by hand. |
| 108 | + |
| 109 | +## Teaching my agents to swim |
| 110 | + |
| 111 | +This is the part I am still slightly amazed by. |
| 112 | + |
| 113 | +Right now my working relationship with an agent is: brilliant intern, infinite enthusiasm, almost zero long-term memory (memory.md? really?). Every morning it forgets it ever met me. It re-derives, re-discovers, re-improvises, and occasionally re-breaks. It is, as I said two days ago, smart for smart users — which is a polite way of saying *I* carry the continuity, in my head and in config files. |
| 114 | + |
| 115 | +Swamp moves that continuity out of my head and into a structured substrate. The agent's work becomes: |
| 116 | + |
| 117 | +- **typed**, so it can no longer lie to itself quite so cheerfully — and on day one the AIs were *always* reassuring me everything was fine while nothing worked; |
| 118 | +- **versioned**, so I can see what actually changed; |
| 119 | +- **auditable**, through reports; |
| 120 | +- **repeatable**, so the second run is deterministic rather than a fresh improvisation; |
| 121 | +- **shareable**, through extensions. |
| 122 | + |
| 123 | +The agent stops being an intern who forgets everything and starts being a colleague who builds and reuses a real toolkit. That is a genuinely different way of working — and I did not expect a download-and-run-a-script tool to be the thing that handed it to me. |
| 124 | + |
| 125 | +## Conclusions |
| 126 | + |
| 127 | +I am, clearly, hooked. The hands are still a bit muddy. |
| 128 | + |
| 129 | +Still wondering about all the possible use cases, for the world and for myself, but Alvabot and Webframp (hope he is human, at least) are helping. |
| 130 | + |
| 131 | +We'll keep wading. |
| 132 | + |
| 133 | +Alvabot and Alessandro Franceschi |
0 commit comments