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?”

Most Liked

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…

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.

mudasobwa

mudasobwa OP

Creator of Cure

Maybe, once I figure out how to properly do that. Basically, AST-based embeddings are a killer feature alongside with AST-based analysis. It’s incremental and should be very long only once and only on CPU. In the meanwhile you might compile yoke yourself with custom configs:

1. How to Disable Models / Embeddings

• Config Option (:skip_bumblebee): Set config :ragex, skip_bumblebee: true in yoke’s application configuration. This skips starting bumblebee.ex and vector_store.ex, saving GPU memory and ~500MB+ RAM.
• Analysis Option: When running directory analysis or SCIP ingestion, pass generate_embeddings: false (or skip_embeddings: true).
• Automatic Fallback for Light Builds: If ML dependencies (bumblebee, nx, exla) are omitted from the build (e.g. for standalone CLI binaries or mix escript.build), Ragex automatically detects that BumblebeeEmbeddings.available?() is false and gracefully bypasses vector store startup without crashing.

2. Features That Work WITHOUT Models / Embeddings

The majority of Ragex’s code analysis and navigation tools function completely independently of vector embeddings:

• Precise Code Navigation (SCIP): Symbol resolution, go-to-definition, and caller lookup (find_callers).
• Graph & Topology Analysis: Structural graph queries (query_graph), path finding (find_paths), centrality analysis (betweenness_centrality, closeness_centrality), and community detection (detect_communities).
• MetaAST Pattern Search: Cross-language structural AST pattern matching (find_metaast_pattern, metaast_search).
• Code Quality & Code Smell Detection: detect_smells, find_dead_code, analyze_quality, quality_report, coupling_report, find_circular_dependencies.
• Security & Secret Scanning: scan_security, check_secrets, security_audit.
• Git & History Analysis: git_blame, git_history, co_change_analysis, and file watcher auto-reindexing.
• Refactoring & Editing: edit_file, validate_edit, rollback_edit, refactor_code, preview_refactor.

3. Impacted Features:

• semantic_search: Requires vector embeddings. If embeddings are disabled, calling semantic_search will return a message indicating the embedding model is not active.
• hybrid_search: Combines vector similarity with graph traversal. When running without embeddings, search relies on structural AST lookups (metaast_search)
and direct SCIP graph queries instead.

Last Post!

mudasobwa

mudasobwa OP

Creator of Cure

The interface is being evolved alongside with the new function to perform code reviews.

/review command makes a code review, then passes all the findings through the human being. You can approve, reject, edit each finding. When you have reviewed the assistant’s review, the results might be published to github with one button.

(Yeah, the screenshot is not showing the /review command, it’s just a final report of some task.)

Where Next? Top

Trending in Announcing Top

restlessronin
The repo is at GitHub - cyberchitta/openai_ex: Community maintained Elixir library for OpenAI API · GitHub. Docs are at OpenaiEx User Gu...
152 12366 136
New
type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New
mudasobwa
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 writ...
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
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
kip
In 2021 I started a new library called Tempo with the objective of modelling time as a set of intervals - not as instants. In 2022 I gave...
New
gtcode
Aloha gang, There’s a new class of AI model out from TypeSafe. Jev is their flagship model. You can learn about it here: ...
New

Other Trending Topics Top

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
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
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
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews