mudasobwa

mudasobwa

Creator of Cure

I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully written in Elixir.

What’s that?

Two weeks ago José posted this on X:

People are sleeping on Elixir for a coding harness:

  • Hot-code swapping allows you to build an extensible plugin system similar to Pi, which reloads live without dropping state

  • Designing a client-server architecture, similar to OpenCode, is basically a byproduct of the actor model (plus you get both IO/CPU concurrency)

  • The built-in distribution means you can easily isolate the brains (model + session) from the hands (sandbox + tools). For example, you can the agentic session on your machine which coordinates agents executing inside Docker or a remote node. Or even have one agent session coordinate multiple nodes (this is basically how Livebook works anyway)

Those can definitely be built from scratch in other languages, but in Elixir the building blocks are basically part of the runtime.

I actually was after writing my own harness since Anna Domini, but work on Cure and some other fancy pet projects (spoiler!) delayed me actually starting it. Also, there is still a freaking capitalism all around, and I need to do some boring stuff for a living too.

But two weeks ago it rang a bell. Now or never. I was never satisfied by Anthropic, Warp became too expensive, Gemini is fancy but I hate using Google products. I decided to give DeepSeek a shot.

What’s under the hood?

Well, I just implemented what José twitted (más o menos.) As my followers probably know, I am a strong believer in staic analysis, specifically in agentic era. I started working on language-agnostic static tools a year ago, and besides many others I created ragex which is good enough to be used alone as a harness (unless one needs an enhanced user interaction.) If you have GPU, ragex would benefit from it, because it creates embeddings for AST, instead of delegating this to pure text instruments, aka grep/awk.

For ragex I created dllb which is a database explicitly optimized for storing and querying AST-like structures.

DSH itself is just a CLI, knotting the remote AI model with local static analysis tools.

There is a comprehensive README, go read it if interested.

FAQ

Q. Why it’s not model-agnostic?
A. Well, technically it should be, maybe with tiny changes. Ragex is. But I don’t have any interest in making it work for Anthropic/Google for my own reasons.

Q. What’s the most exiting feature?
A. Approximately 8 hours of heavy work on my other pet project (not fairly complicated but still) cost me $1.12. The same amount of work with Warp would be $20+ approx.

Q. Does it work with PRs/diffs/git?
A. Yes. Natively.


If anyone is interested and/or wants to try, please, you know where to put issues and question. The official AI policy of all my projects is the very same: I accept any PRs, if and only if they are less than 314 LoCs. I do not care if they were created by a human, a model, or a bigfoot. I still review all PRs myself, using my eyes, though.


Here is a screenshot of the response to the question “How Brain/Hands Architecture is implemented in DSH?”

Showing Posts 1 to 10

AstonJ

AstonJ

Nice - I like DeepSeek :whale:

And your thread reminds me we need a glossary so we can add things like coding harness - so many new terms for newbies to get their head around nowadays…

plcholder

plcholder

WOW! this is amazing dude, you dont know how happy this had made me, I was thinking of trying to realize something like this, but I lack the technical prowess, so I will be reading your code this evening. I really like the AST thing and I was thinking could one use it for prompt caching gains

plcholder

plcholder

So got around to setting things up, im confused why v3 and not v4? is this a typo?

mudasobwa

mudasobwa OP

Creator of Cure

It would help to answer if you drop a hint what are you referring to.

olivermt

olivermt

Deepseek model?

I havent dug in yet, but is this a client/server model or do you spin up a full instance per session?

If its client/server, a ui that lets you work on multiple folders would be rad.

mudasobwa

mudasobwa OP

Creator of Cure

The harness is built around the DeepSeek API (api.deepseek.com), and the model is just a string sent in the API request body ("model" => config.model in deep_seek_api.ex). There is no hard validation — the harness will happily send any model string to the API. However, there is a hardcoded alias table in the /model slash command (repl.ex).

Harness means it’s a client. By multiple folders you mean several directories outside of the umbrella? Like /foo/bar and /zoo/zar? It’s not so hard to add, but I doubt I want to do that, because it would break the clarity: now dllb database is located at the known place within the project directory and can even be version controlled if desired.

olivermt

olivermt

I have stopped using clis and use only desktop apps, so going back to cli feels like the stone age, thats the main reason I asked.

Also multi agent coordination in a centralized server world where each thread/folder is a client would be nice too

mudasobwa

mudasobwa OP

Creator of Cure

Well, I don’t use GUI until absolutely necessary, I value my time and I genuinely think GUI would never be as aesthetically lacy and nifty as CLI. I’m still a developer, after all.

I cannot think of any application of such a sentralized server.

plcholder

plcholder

In you documentation you mention deepseek v3 and composer, I was wondering why the old models instead of v4 and v4 flash

mudasobwa

mudasobwa OP

Creator of Cure

The harness obviously works with all the models provided by DeepSeek transparently, the model is just another string parameter passed to their API.

Where Next? Top

Trending in Announcing Top

type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New
GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. https://github.com/woylie/doggo Features Unstyled Phoenix components....
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
ahamez
Hi everyone, I’ve been working on this protobuf library for 3 years. We use it in the company I work for, EasyMile, to communicate with ...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
kip
I’ll shortly be launching Text, a nascent text analysis library. Current functionality In this early version (not ready for prime time) ...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
bartblast
Hey folks, I just published a post about Hologram’s funding and where the project goes next - the short version: Curiosum as Main Spons...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews