Every connection, live, per app
Each flow and the program behind it, rated for risk as it happens.
- Block, mark known or skip decryption from the row.
- The same view in a terminal:
watchdog live.
Monitor every agent, every file, every network flow. Block what you don't want.
Why
Everything it sees is rated for risk: each connection, each agent session, each system item and each sensitive file.
Which app talks to which host, and what it sends.
Every command, file and connection, per session.
Launch items, extensions, ports and sensitive files, rated.
Every file open in any app that uses the network, and every file an agent reads or writes.
Features
Each flow and the program behind it, rated for risk as it happens.
watchdog live.For every app or just one. Domain and IP rules hold on every port.
Blocking is per request on inspected traffic and in agent sessions, and per connection on traffic you don't decrypt.
Opt in, trust the local certificate authority, and read each request's headers and body.
Each Claude Code and Codex session, with every file it touched and every connection it made, rated for risk.
Keep each session inside its project and the folders you allow.
watchdog fence-asks.Needs the Developer ID build, pending Apple's Endpoint Security entitlement. Coming
Every row is rated High, Medium or Low with reasons. Patterns become findings with a recommendation.
Network and file rules together, so the widest ones are easy to question.
watchdog rules.Visibility
Every launchd job, rated. A changed item comes back for review.
System and kernel extensions, VPNs and content filters.
Every listener, and whether your network can reach it.
Credentials and wallets held open by networked programs.
Each one's signer, and everything it did.
Per program and destination, over any window.
CLI
watchdog talks to the same agent as the app, with --json for scripts.
watchdog live, agents, insights, portswatchdog run --ask -- claude: one fenced command.$ watchdog domains --risk high DESTINATION PROCESS RISK OUT upload.example-paste.net curl high 2.1 MB tunnel.example.run python3 high 14 KB $ watchdog block upload.example-paste.net Blocked upload.example-paste.net for every program. $ watchdog run --ask -- claude Fenced in ask mode: ~/code/acme-web ask read ~/code/shared-config (outside the session's folders) $ watchdog fence-asks allow 1 --project Allowed ~/code/shared-config for project acme-web.
How it works
Sees each flow and its program, and enforces domain and IP rules.
Network Extension frameworkChecks a Claude Code or Codex session's file access against the fence.
Endpoint Security · Developer ID buildStores, decrypts, rates and analyses.
Runs as you, in the backgroundShow the record and carry your decisions back. Changes from inside an agent session are refused.
SwiftUI app ·watchdogPrivacy
No cloud service, no account.
Everything is kept on your computer. Its only lookups are reverse DNS for addresses it asks you to review.
Request contents and full URLs are encrypted with a key in your Keychain.
Secrets are hidden everywhere. Revealing them takes Touch ID.
Contents for 3 days, connections for 30, by default.
FAQ
Claude Code and Codex. The file fence covers both.
No. You still get per-app connections, domain and IP rules, and agent tracking. Inspection adds request contents and URL rules.
Changes to rules, settings and the fence are refused when they come from inside an agent session. In Ask and Enforce, the fence also blocks a session's signals to VibeArmory.
No recorded data. No cloud, no account, no analytics.
It's in early access. Get VibeArmory.
Early access for developers on macOS.
Get VibeArmory v0.2.0 (Mac)