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
- cloudflare-workers
- javascript
- webmcp
Log in or sign up for Devpost to join the conversation.