frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Dap-mux – Connect your editor and REPL to the same debug session

6•YesJustWolf•3h ago
I have been coding over four decades, in many languages, on many projects (including Firefox, Final Cut Pro, the Newton, and Fullwrite Professional if you can remember that far back; all these using my "dead-name").

I wrote something small and simple to scratch an itch. It's the UNIX philosophy: small "one-trick ponies", each *really* good at their one trick, then the user can hook them together to solve actual problems. I'm a CLI guy, and for almost everything, I already have this. But not for debugging. The itch I scratched was the connector that enables this philosophy for debugging. That thing is dap-mux. A DAP multiplexer turning a one-to-one protocol into a cooperating session of as many tools as you need to get it done!

How it started: Helix and Python for me (and sometimes IPython), with the rest of my team using PyCharm (which I have long loved!). My team's problem is that they want the PyCharm debugger, and so must be satisfied with the JetBrains editor. *My* problem was I could use a full-blown debugger *or* I could have IPython *or* I could have Helix (or sometimes an unsatisfying combination of Helix and the debugger). That was my "itch".

DAP (Debug Adapter Protocol) is the tantalizing answer, except it isn't. DAP is what editors (that don't want to write their own debuggers) are starting to adopt. The problem with DAP is it's one-to-one. One editor connects to one debugger. Done. Not a solution to my problem. And then suddenly, it *was* the solution. I realized that a DAP multiplexer would let you connect any DAP-aware editor to any debugger for any language, and simultaneously to a REPL, another session of your editor (or a different editor)! With the side benefit that now, like screen or tmux, since each process is its own thing: sessions are durable. Just restart whatever crashed and you're back where you were!

There were hard parts: sequencing, late joiners, state management. Different end-points working on different actions in different sequences but with the same message ids. I solved these problems something like how NAT works. Instead of translating network addresses, though, I'm translating the sequence numbers of each client into something global and ordered, then correctly routing replies back to the end-point awaiting them, while mapping the sequence numbers for those replies back into the space of that end-point. Knowing the current state of the debugger, and replaying that as a message sequence to late joiners lets you start/connect the clients in any order. I chose Python: asyncio fits the I/O-router pattern perfectly, and it lets the IPython extension run in-process rather than over IPC.

There are problems not yet solved: for instance, I think configuration in the clients and/or the startup sequence is too complicated. But it functions! I got what I wanted!

The combination I use every day: Python + debugpy + Helix + IPython, all connected simultaneously. Step with `%n` or `%s`, evaluate expressions with `%eval`, watch Helix track the current line in real time. Rust with codelldb is the second confirmed combination — I debugged a Dijkstra implementation with Helix and a third-party DAP observer tool both connected to the same codelldb session. A community member, Sean Perry, has already built [dap-observer](https://github.com/shaleh/dap-observer), which renders the current frame's variables as a navigable terminal tree. *This* was my exact dream! Small, focused, connectable tools all playing together!

There's so much left to try: other editors, other debug adapters, Windows, other languages. None of this has been touched yet. The most helpful thing now is people testing it with their own setup and reporting what they find. It's time to play!

`uv tool install 'dap-mux[ipython]'` for Python + IPython. `uv tool install dap-mux` for headless use with any language and adapter. No need for any part of the Python ecosystem.

https://github.com/dap-mux/dap-mux

Comments

jauntywundrkind•2h ago
This is such a frustrating limitation. DevTools protocols I think had a similar limitations that they eventually fixed, that now you can have multiple things connect to DevTools.

Show HN: Keybench – Scriptable, extensible performance tool for key value stores

https://github.com/guycipher/keybench
6•alexpadula•1h ago•0 comments

Show HN: Infinite canvas notes in the non-Euclidean Poincaré disk

https://uonr.github.io/poincake/
119•uonr•4d ago•22 comments

Show HN: Ironwall, a safety-first native programming language and compiler

12•bOZbfU4YdRnJQ•1h ago•5 comments

Show HN: VaultSQL – Open-Source Zero-Trust SQL Workbench

https://vaultsql.com/
3•antileet•1h ago•0 comments

Show HN: Aquifer – an MCP runtime for spiky agent tool traffic

https://github.com/rjpruitt16/aquifer
3•rjpruitt16•1h ago•0 comments

Show HN: A beautiful and local-first PDF reader for studying dense things

https://www.tryquincy.live
3•oleksg•2h ago•0 comments

Show HN: Soft Body Jiggle Physics

https://github.com/xloveee/jiggle-physics
51•vesperance•5d ago•19 comments

Show HN: Aegis – post-quantum cyberdefense proxy (471 attacks, 0 breaches)

https://github.com/conchaestradamiguelangel-droid/aegis
3•conchaestrada•3h ago•0 comments

Show HN: Formally verified polygon intersection – Opus 4.8 oneshots, prev failed

https://github.com/schildep/verified-polygon-intersection
84•permute•2d ago•17 comments

Show HN: Dap-mux – Connect your editor and REPL to the same debug session

6•YesJustWolf•3h ago•1 comments

Show HN: Lowfat – pluggable CLI filter that saved 91.8% of my LLM tokens

https://github.com/zdk/lowfat
146•zdkaster•1d ago•73 comments

Show HN: Typedframes – Pandas/polars column name checking at lint time

https://github.com/w-martin/typedframes
3•w-martin•4h ago•2 comments

Show HN: ABC Classic 100 Rankings visualised

https://classic100.gotski.workers.dev/
35•gotski•23h ago•17 comments

Show HN: Resonate – Low-latency, high-resolution spectral analysis

https://alexandrefrancois.org/Resonate/
3•arjf•6h ago•3 comments

Show HN: On-device transcriber that's 97% accurate at identifying speakers

https://mimicscribe.app/
27•marshalla•1d ago•8 comments

Show HN: Ccgs – Collaborative Claude Code sessions, stored in Git branches

https://github.com/ingram-technologies/claude-git-sessions
6•scrollaway•9h ago•2 comments

Show HN: Edsger – A handwritten Clojure REPL for the reMarkable 2

https://handwritten.danieljanus.pl/2026-06-01-edsger.html
258•nathell•4d ago•34 comments

Show HN: I reverse-engineered the world maps of Test Drive III (1990 DOS game)

https://github.com/s-macke/Test-Drive-3-Maps
215•s-macke•6d ago•56 comments

Show HN: Prela – Purely Algebraic Relation Combinators

https://github.com/remysucre/prela
71•remywang•5d ago•13 comments

Show HN: Scale Physics – a physics encyclopedia with WebGL animations

https://scalephysics.com/
3•WizardK•11h ago•0 comments

Show HN: StructOCR – API for parsing global passports, invoices, and containers

https://structocr.com
4•glyph_miner•12h ago•2 comments

Show HN: Uruky (EU-based Kagi alternative) now has Image Search and URL Rewrites

https://uruky.com/?il=en
232•BrunoBernardino•2d ago•224 comments

Show HN: Mercek – A Desktop IDE for AWS ECS

https://www.mercek.dev/
62•utibeumanah•2d ago•29 comments

Show HN: NullRead – A simple HN Android client

https://nullread.0x96f.dev/
4•0x96f•13h ago•1 comments

Show HN: Sub-Agent MCP: LLM delegation and sub-agent orchestration via MCP

https://github.com/stormaref/Sub-Agent-MCP
5•avestura•13h ago•0 comments

Show HN: I used to pin street parking by hand in Google Maps. Now it's an app

https://apps.apple.com/us/app/curbie/id6770876635
5•ayranlahmacun•13h ago•1 comments

Show HN: Eyeball

https://eyeball.rory.codes/
292•mrroryflint•4d ago•88 comments

Show HN: Open-source X Bookmark Manager

3•ssarisen•14h ago•1 comments

Show HN: I ported Xonotic (arena FPS) to WebAssembly with full P2P multiplayer

https://dpgame.xonotic.workers.dev/
10•astlouis44•5h ago•4 comments

Show HN: Omni – Local-first multimodal file search on macOS

https://hanxiao.io/omni/
5•artex_xh•1d ago•2 comments