Show HN: Ariana – A time travel debugger for PY/JS right in VSCode

github.com

25 points by anougaret 3 days ago

Hello HN!

I've recently released and open-sourced a time travel debugging VSCode extension for Python, Javascript & Typescript.

https://github.com/dedale-dev/ariana

It's born from the pain of spending hours reproducing bugs, struggling to read parallel streams of logging across client/server, and managing print/console.log statements.

You can see a short video here: https://www.youtube.com/watch?v=M2gZv7IOo7s

Basically its two parts:

One part CLI called `ariana` that you install with npm/pip and run alongside your code's run command. For instance `ariana python main.py` or `ariana npm run dev`. It then instrumentizes your code using our specialized parsers & small language models (self-hosted version of the server that does that coming soon).

The other part is a VSCode extension^(1). It picks up the traces left from running the code with the CLI. Then it lets you highlight the parts of the code that ran, and just by hovering any expression (or subpart of a complex expression), see which values it took.

Our goals with this are:

1. Make time-travel debugging easy to use for new coders/vibe coders that would never use a normal debugger, let alone some advanced logging.

2. Allow debugging of across the stack, across components, across languages, parallel data flows super easily (typical pain point of maintaining AI agents codebases, multiplayer web games or RL training setups). In prod even some day when we have a more robust feature set.

3. Experiment with agents using time-travel debugging to fix code accurately in one shot without re-running the code or spending tokens producing print/log statements.

4. Make time-travel debugging applicable to fullstack & frontend development (we plan to sync your frontend's visual state with the traces).

Some may ask why not interfacing with debuggers' APIs and instead rewriting code with tracing?

I think it gives us maximal granularity and expressivity in the traces we get from the code to minimize performance issue and avoiding looking at non-sensical things. It also opens the door to using this in production in the future. Of course I'd be happy to discuss that further with you if you worked on similar projects in the past :)

(1) https://marketplace.visualstudio.com/items?itemName=dedale-d...

Thank you very much for your attention!

malmz 3 days ago

Did i read that right? What part of a debugger would require the use of an AI language model?

  • anougaret 2 days ago

    Hey, yeah I know sounds weird. We're experimenting with small custom models <1B params to figure out which part of your code you'd probably not want to instrumentalize the normal way (e.g. logging absolutely everything) and instead in a more tailored way (and what that tailored way is), for instance a python for loop with 10k iterations.

bluelightning2k 3 days ago

This is very, very, very cool.

I implemented something like this once but had to use the typescript compiler to identify all the variable names and also use the typescript compiler to find valid moments they could change and insert code to capture their value at that time. Guessing you didn't go to that length in multiple languages. Sou how did you manage this? I'd be very interested in a technical write up and I suspect hn would too

  • anougaret 2 days ago

    Will def. do a technical write up! Wanted to do a more target approach like you around valid mutations only but I think users want to observe variables not only where they are written but also where they are read, so a low hanging fruit was to wrap all the expressions I could (hundreds of lines of AST queries and tricks per language) with functions/lambdas and some sort of "logging". Of course this is only 4 weeks in the making so there is so much more to do. And as you guessed you probably can't do the targeted approach well in Python and others.

AntDes 3 days ago

Let me know once you've tested with PyTorch :)

clementclp 3 days ago

Promising one! Looking for Ruby integration

  • anougaret 3 days ago

    Thank you! I feel like with Python we cracked the code rewriting issues very much to a point where Ruby could be supported fast

bluewin 3 days ago

Looks rad! Can't wait to integrate this into my workflow

  • anougaret 3 days ago

    yay :) happy to hear that

demod6 3 days ago

Consider shipping the components as an MCP.

  • anougaret 3 days ago

    you caught me at the moment of coding this!

ThomasCloarec 3 days ago

looks cool!

  • anougaret 3 days ago

    Thanks :) Let me know if you use it and get into any trouble