Skip to content

What leaves your network

"Where does my data go" is the first question worth asking about anything holding your production credentials. The honest answer changes with your configuration, so Prodpeek computes it rather than restating a paragraph that can go stale.

prodpeek egress
Output
Outbound connections for this configuration
============================================

  coolify.ejd.dk
      why      upstream for service 'ejd-coolify'
      carries  the tool calls your policy allows, with the injected credential
      when     on every allowed agent call

  ejd.dk
      why      uptime monitor 'EJD public site'
      carries  an unauthenticated GET or TCP connect. No credential
      when     every 60s
      turn off delete the monitor

This instance can reach 2 host(s): coolify.ejd.dk, ejd.dk. Nothing else.

Never sent anywhere, under any configuration: an upstream credential,
a client key, the audit log, or the output of a read_leaks tool.

The same table is on Settings in the console.

The contract

Always: the upstreams you configured, and nothing else. A default install with no services makes zero outbound connections. Not "minimal telemetry" — zero.

If you set a control URL: the licence check-in, carrying profile names, revisions and file hashes, plus seat and project counts. No service names, no URLs, no customer data. The control plane's own schema has nowhere to put them if it did, and a test asserts that.

If you configure an AI key: your chosen provider, carrying monitor telemetry — and, only for a project you explicitly opted in, the results of allowed reads from that project.

When a hosted package is first fetched: npm or PyPI. Never again after prodpeek hosted prefetch, and never at all without hosted services.

Never, under any configuration

  • An upstream credential
  • A client or admin key
  • The audit log
  • Anything returned by a tool classified read_leaks

That last one is a rule with teeth rather than a promise: every payload bound for a provider passes through one function that drops read_leaks output, and the denied set is computed from the profiles the project actually runs.

Running it with nothing outbound at all

Genuinely supported, and not a degraded mode:

  • Leave PRODPEEK_CONTROL_URL unset. No check-in, no feed fetch, no socket. The policies still work — deny-by-default is local and never needed a feed.
  • Configure no AI key. Nothing is missing.
  • prodpeek hosted prefetch if you use hosted upstreams, so their packages are already in the data volume.

Then the only hosts Prodpeek reaches are the ones you connected, and prodpeek egress says so in a form you can paste into a security review.