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

3•YesJustWolf•1h 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•6m 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: A beautiful and local-first PDF reader for studying dense things

https://www.tryquincy.live
1•oleksg•58s ago•0 comments

Experts and superforecasters update their AI timelines

https://forecastingresearch.substack.com/p/leap-wave-8-ai-timelines
1•hhs•4m ago•0 comments

If LLMs Have Human-Like Attributes, Then So Does Age of Empires II

https://arxiv.org/abs/2605.31514
1•doener•7m ago•0 comments

Show HN: An iOS bubble level designed to calibrate away camera bump

https://apps.apple.com/us/app/bubble-level-calibrated/id6767735397
1•dfskGT•15m ago•1 comments

My Partner's Dependence on Chatbots Is Becoming a Problem

https://www.nytimes.com/2026/05/30/magazine/partner-chatbot-dependence-ethics.html
1•gk1•15m ago•0 comments

TB – super‑fast text‑only browser using Jina Reader API

https://github.com/falcga/tb
1•falcga•20m ago•0 comments

A Fully Hallucinated OS [video]

https://www.youtube.com/watch?v=z3pV6FHvcgM
1•My_Name•21m ago•0 comments

How much do amd64 microarchitecture levels help in Go?

https://lemire.me/blog/2026/06/06/how-much-do-amd64-microarchitecture-levels-help-in-go/
2•chmaynard•22m ago•0 comments

"The only cassette mechanism being made" myth BUSTED [video]

https://www.youtube.com/watch?v=dYeY4DvlFDs
1•fortran77•27m ago•0 comments

Launching internal testing for PicnicTimer – looking for early Android testers

https://picnicapps.uk
1•PicnicApps•28m ago•0 comments

Hong Kong Surpasses Switzerland as the Largest Cross-Border Wealth Hub

https://www.bcg.com/press/27may2026-hong-kong-surpasses-switzerland-largest-cross-border-wealth-hub
3•LopRabbit•31m ago•0 comments

Breaking Circular Imports in Python Without Losing Type Safety

https://www.orcaset.com/blog/breaking-circular-imports-in-python-without-losing-type-safety
2•rbanffy•34m ago•0 comments

Hong Kong Develops " First" Nasal Spray for Rapid Stroke Aid [video]

https://www.youtube.com/watch?v=WyourYqtIOA
2•nikolay•35m ago•0 comments

The Machines Making People Human Again

https://www.thefp.com/p/the-machines-making-people-human
1•mhb•35m ago•0 comments

We are in the golden age of Open Source

https://kerkour.com/open-source-golden-age-ai
2•worik•43m ago•0 comments

MySQL 9.7.0 LTS Is Now Available

https://blogs.oracle.com/mysql/mysql-9-7-0-lts-is-now-available-expanded-community-capabilities-a...
1•ksec•44m ago•1 comments

Scientists ejected from diabetes conference for distributing journal reprints

https://arstechnica.com/science/2026/06/scientists-ejected-from-diabetes-conference-for-distribut...
2•quapster•44m ago•1 comments

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

https://github.com/conchaestradamiguelangel-droid/aegis
2•conchaestrada•47m ago•0 comments

They are looting your life savings

https://social.bau-ha.us/@raganwald/116705256401454865
15•ColinWright•49m ago•10 comments

They Already Need a Bailout

https://www.youtube.com/watch?v=QAn_39-qu6I
4•tcp_handshaker•52m ago•0 comments

The mysterious database that provides clues to China's foreign surveillance

https://www.smh.com.au/world/asia/the-mysterious-database-that-provides-clues-to-china-s-foreign-...
1•cwwc•54m ago•0 comments

No More Hidden Changes: How MySQL 9.6 Transforms Foreign Key Management

https://blogs.oracle.com/mysql/no-more-hidden-changes-how-mysql-9-6-transforms-foreign-key-manage...
1•ksec•54m ago•0 comments

The Dictionary of Obscure Sorrows

https://www.thedictionaryofobscuresorrows.com
2•mhb•55m ago•0 comments

Add a Little Something to the CSS

https://codeberg.org/gedankenstuecke/pages-source/commit/57f7df832d45eb847d1a0af3cca2f3ab81585a2c
1•ColinWright•56m ago•0 comments

Ask HN: How to get my contact info off US political party's list

1•kaycebasques•56m ago•0 comments

An engine-run runtime environment for data sovereignty

https://www.trinitymonolith.io/
1•rahkyt•58m ago•0 comments

Ukrainian Drone Strikes Target Russian Military Facilities in St. Petersburg

https://www.wsj.com/world/russia/mass-ukrainian-drone-strikes-target-russian-military-facilities-...
3•JumpCrisscross•58m ago•1 comments

Database as a Graph for Relational Deep Learning

https://neovintage.org/posts/relational-deep-learning/
1•neovintage•1h ago•0 comments

Programmers Aren't People

https://elliotbonneville.com/programmers-arent-people/
2•elliotbnvl•1h ago•0 comments

Gothic 1 Remake

https://store.steampowered.com/app/1297900/Gothic_1_Remake/
1•doener•1h ago•0 comments