Inspiration
Arjun is a Second Officer on a product tanker with twenty minutes of internet a day. A manning agent offers him six months, and one certificate lapses in the middle of it. He would find out at the agency desk, not at sea. The builder is pursuing STCW certification and wanted the papers watched by something that does not need to see them.
What it does
Dogwatch reads a seafarer's certificates on his own machine, computes every expiry and sea-service window in code, drafts the renewal packet, and sends it from Telegram after one approval bound to the packet digest. The cloud model only sees placeholders. A model never decides validity: on the same sixty profiles, Nemotron Super alone said READY on 22 that were not ready, Nemotron Ultra alone raised 8 false alarms, and the code engine matched all 60.
How we built it
Python engine (vault, Bosun, Navigator, Officer of the Watch, Lookout), a host-side Radio Officer, an OpenShell policy whose boundary is checked by NVIDIA's own prover, a supervisor middleware called the Seal, six reusable SKILL.md skills, a pre-registered evaluation set with misses published, and a Next.js judge door. Nemotron Nano, Super and Ultra are routed by job; thinking is off for extraction. Tavily drives the weekly rule-drift watch.
Challenges
- A model must never decide validity, so every verdict is computed from dates and rule packs, each rule carrying a quote checked against a snapshot of the source.
- OpenShell's sandbox needs Linux 6.2 or newer (Landlock ABI 3) and Docker Engine 28; the build machine had kernel 5.10 and Docker 27.1.1. The gateway, provider profile and Seal registration ran there; the sandbox could not start, so the sandbox proofs ran on a GitHub Actions ubuntu-24.04 runner instead (kernel 7.0): P2 denied 20 of 20 injected posts, P4 failed closed, P5 showed only a placeholder, and the effective-policy re-proof was unsupported by the prover.
- OCR splits identifier numbers with spaces. The first reading run leaked 12 identifiers into request bodies; the detectors were fixed and both runs are published.
- Some regulator hosts refuse the build network, so the India and Singapore rules were read through Tavily Extract and each quote is checked against its snapshot; Nigeria ships no rule rather than a guessed one.
Accomplishments
- Nemotron alone against an independent oracle (60 profiles): Super 30 correct with 22 false-safe, Ultra 47 correct with 8 false alarms, Navigator 60 correct.
- 39 of 40 specimen certificates read exactly, 0 wrong without a flag, 0 identifiers in 40 outgoing request bodies.
- A literal-only guard let 158 of 200 encoded attacks through; the first Seal missed 8, the second missed 0 with 0 false blocks (a regression check, labelled so).
- The OpenShell prover reports counterexamples for three attack policies.
- An unattended loop ran one daily and one weekly check with live Tavily and Nemotron.
- Restart with a pending approval produces one send and no duplicate.
What we learned
Sourced rules do not state a counting convention for sea service, and 7 of 60 histories near the thresholds flip verdict with it. A literal guard misses most encodings. Thinking on used about ten times the tokens and time of thinking off on one real extraction. Listed models are not always callable: one Nemotron id in the catalog list returned 404.
What's next for DogWatch
Run the probe and the evidence on Token Factory when a key exists, run the sandbox proofs (P2, P4, P5) on a Linux 6.2 runner, and read the Nigeria and Paris MoU sources.
Built With
- fastapi
- framer-motion
- grpc
- next.js
- nvidia-nemotron
- nvidia-openshell
- playwright.
- python
- tavily
- typescript
Log in or sign up for Devpost to join the conversation.