heliograph
Debug a machine you cannot log into
Through an operator who cannot debug it, in an estate where nobody is going to give you SSH. You publish a step, it runs on the far side, and the whole run comes back as a log with every line stamped in UTC - so a hang reads as a gap rather than as slow progress, and the log returns whether the run passed or failed. The skill is one part of the heliograph toolkit: the CLI it drives, the plain-bash station, the relay and the MCP server are all on heliograph.dbhq.uk.
Install heliograph
Add the DBHQ marketplace, once
/plugin marketplace add dbhq-uk/marketplaceInstall the skill
/plugin install heliograph@dbhq
Both commands work in Claude Code and in Codex. The marketplace is a public repository you can read first: dbhq-uk/marketplace (external site)
What it is good at
Running the gap as a loop, not a relay
You publish a step, the far side picks it up within seconds and runs it, and the whole run comes back as a log with every line timestamped in UTC - whether it passed or failed. Nobody has to paste half a terminal at you.
Installing nothing on the far side
The station is plain bash the operator can read before running it: Bash 4 or newer, git and GNU coreutils, no packages, no credentials, no tunnel. CI enforces that no Go will ever appear in it. On a locked-down box where installing anything is its own change request, that constraint is the entire proposition.
Being read-only unless the operator said otherwise
Every step declares itself read-only or an action, one that declares neither does not run, and the station refuses an action unless it was started to allow them. It will not run as root either.
Finding the stall by arithmetic
Scanning the timestamp column for gaps before reading the content is the most valuable instruction in the method, and it is arithmetic rather than judgement. A long interval is attributed to the line before it, because that is what was running. A log where every line carries the same timestamp is reported as an error, not as "no gaps".
Serving the same commands to an agent
The CLI is also an MCP server, so an agent running the investigation itself gets the same verbs as typed tools. The gates do not move: a tool call publishes a request, and the station still decides whether to run it.
What it does not do
It will not give you access you do not have
It does not tunnel, proxy or hold a connection open to a host you control, and there is nothing here to punch through a firewall with. A raw TCP transport was considered and dropped for exactly that reason: a persistent reverse connection is a C2 channel by any blue team's definition, and that sentence is a large part of why this class of tool is permitted in regulated estates at all. Every command runs on the far side because someone with legitimate access chose to run it.
It is not a replacement for SSH
If you can just log in, you do not need this. It exists for the estate where access is blocked by policy rather than capability.
The relay is not usable end to end yet
The station side is complete and the relay server is deployed, but no CLI command can select it, so the near side is the missing half. Git is the transport the CLI drives end to end today. File share, bundle and object store are control-side only: the CLI implements all three and the station has no transport for any of them.
A PowerShell station is planned, not shipped
The bash station covers Azure hosts, Kubernetes and a Windows launcher. A native PowerShell far side is on the roadmap and is not in your hands yet.
The skill needs the CLI
It drives the heliograph binary and nothing else. When the binary is missing the skill prints the install command rather than pretending to work.
Read it before you install it
Every line is public and MIT licensed. The README is the long version of this page, including the parts that are still rough.
dbhq-uk/heliograph (external site)heliograph.dbhq.uk (external site)