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

woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. https://github.com/woylie/doggo Features Unstyled Phoenix components....
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
anuaralfetahe
Hello Published a new library - ProcessHub! ProcessHub is a library designed to manage process distribution within the Elixir cluster. ...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
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
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
sergio
It’s not that it’s vocabulary is too advanced. It’s something worse. I get lost trying to follow even a paragraph written by Claude. It’...
New
AstonJ
This showed up on my feed.. anyone heard of it? Just hype? Ox Alpha is a reasoning model designed for coding, sustained ag...
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