Debugt
Debug a system of services, not one service at a time.
Debugt runs the services you already have in launch.json under VS Code's debugger, from a
canvas you draw them on, and shows what every request did as it went through them: each hop
from one service to the next, what was sent and what came back, and the lines of your own code
that ran on the way — with the values they changed.
It is a VS Code extension with a web UI of its own, served from your machine. Nothing to
install besides the extension, nothing to add to your code, and nothing it records leaves your
machine unless you share it.
debugt.com · Documentation · Pricing
Why
A bug in a system of services is rarely in the service you are looking at. The request went
through three others first, one of them called a fourth, and the question is which of them got
it wrong — which means starting all of them, pointing them at each other, sending a request,
and reading four Debug Consoles side by side.
Debugt does that part for you:
- Start the whole set at once. Put the services on a canvas and press Run all. Each starts
under the VS Code debugger, so breakpoints work as they always do — and Debugt waits for
each to be ready, not merely started.
- See every hop. A request is drawn as the tree of calls it caused, across services and
languages: which service called which, in what order, how long each took, and which one
failed.
- See what the code did. Inside each hop, the lines that ran, the functions called, what
each was given and what it returned or raised — and, on the file itself, the branch that was
not taken.
- Point services at each other. Draw a line from one service to another, and its calls go
to the copy on your machine instead of the one in the cloud. No config files to edit, nothing
to change in the code.
- Answer what you do not run. Override a library function or a URL a service calls, and it
gets the value you set — a payment gateway that always declines, a slow API that answers at
once.
- Keep every request. Request History keeps each send with its whole trace, to open again
later, sort and filter, or bookmark.
What you get
- Canvas — your services from any number of open repos, drawn and wired. Run, stop and
restart them one by one or all together, with each one's branch, host and readiness on it.
A service whose code was edited, or whose branch changed, since it started says so.
- Request runner — saved requests per service, with params, headers and a JSON body, sent
to a service and traced. Values can be rotated on every send.
- Event services — run a Lambda-style handler locally and invoke it with an event, or have
SQS and SNS messages from another service delivered to it through a line on the canvas.
RabbitMQ consumers are traced too.
- Request History — every send and invocation, with its trace, its request and its
response, searchable and kept on your machine. Requests from Postman, a browser or a phone
can be recorded as well.
- Canvas console — services starting, stopping and coming up, and each send as it comes
back, in one place.
- Shared sends — share one send, trace and all, as a link a teammate opens in Debugt or a
browser. It is encrypted on your machine first, with its key in the link alone; you see what
goes before it goes, and can revoke the link at any time.
Languages
|
Requests in and out |
Execution recording |
| Node.js |
Yes |
Yes |
| Python |
Yes |
Yes, Python 3.12+ |
| Java (and Kotlin, Scala) |
Yes |
Yes |
| Go |
Yes |
Yes |
| PHP |
Requests in; calls out through Guzzle and Symfony HttpClient |
Not yet |
What each covers — frameworks, client libraries, message queues — and where its limits are is
on Language support.
Getting started
- Open the folder, or folders, your services are in. Each service is a configuration in
.vscode/launch.json — the ones you already press F5 on.
- Run Debugt: Open UI from the Command Palette. The UI opens in your browser, at
http://127.0.0.1:4400.
- Drag services from the left onto a canvas, give each its host, draw lines between the ones
that call each other, and press Run all.
- Send a request from the runner, and its trace opens as it happens.
More in the documentation: canvases, launch.json, service kinds,
requests, settings, and where Debugt keeps its data.
Plans
Debugt is free to use with up to 5 services running at once and up to 5,000 steps recorded per
request. Pro has no limit on running services and records up to 200,000 steps. See
pricing; a license key is entered in the UI's Settings.
Debugt is in an open beta: the Free plan is open to everyone, and Pro is in a closed beta for
now.
Privacy
The server Debugt runs listens on your machine only (127.0.0.1), and what it records — traces,
request history, canvases — is kept on your machine, under ~/.debugt. Debugt sends no
telemetry. What it does send, and only when you ask it to:
- A license key, with a hash of this machine's id, to check a Pro license.
- A send you share. It is encrypted on your machine before it is uploaded, and the key that
opens it is only in the link, after the
# — so Debugt's server holds bytes it cannot read.
Credentials — Authorization and Cookie headers, tokens in a URL — are taken out before it is
encrypted, with the headers, body fields and recorded variables your project marks as secret.
A link lasts the days you choose, and you can revoke it sooner.
Commands
| Command |
|
| Debugt: Open UI |
Opens the web UI. |
| Debugt: Open Shared Send |
Opens a shared send's link in Debugt. |
| Debugt: Show Server Status |
Says where the UI is served, and which window serves it. |
| Debugt: Copy UI URL |
Copies the UI's address. |
Settings are under Debugt in VS Code's settings: the port, how the UI opens, and whether it
opens on startup.
debugt.com
| |