Inspiration

Operators already paste systemctl status dumps into chat. Unitwatch makes those generators first-class page tools with document.modelContext.registerTool(...). The human UI and the agent share one workspace. This is not MCP-over-HTTP.

What it does

Unitwatch is a public web bench for crashed systemd units. A human pastes systemctl status or a journal snippet. An agent calls the same generators as WebMCP tools. Both see the same proposed files: a restart drop-in, a TCP watchdog timer, and a rollback.

Nothing SSHes. Nothing emails. Nothing is installed on a host. The page only writes files onto itself.

Tools: parse_systemd_status, propose_restart_dropin, propose_watchdog_timer, propose_rollback, propose_hardening_plan, get_workspace.

How we built it

Built with JavaScript on Cloudflare Workers, exposing the same generator functions to the page UI and to agents via WebMCP (document.modelContext.registerTool). Try it: open the live URL in the ChatGPT in-app browser or Chrome with chrome://flags/#enable-webmcp-testing. Prompt: Parse the sample unit, then propose a restart drop-in and a TCP watchdog on 8080.

Challenges we ran into

Keeping one set of generators authoritative for both the human UI and the agent tools, and keeping the bench strictly read-only with respect to real hosts.

Accomplishments that we're proud of

One workspace shared by human and agent, with no host access, no SSH, and no email.

What we learned

Page-native tools via WebMCP are a better fit than MCP-over-HTTP when the human UI and the agent should share state.

What's next for Unitwatch

More generators, richer journal parsing, and broader unit-type coverage.

MIT license is on the GitHub About page.

Team: Cove / Solari Systems LLC.

Built With

Share this project:

Updates

Submission history