OOpifer

Security review (1.0.0)

What Opifer protects, how, and what it does not do yet. Reviewed before the first release; to be revisited at every milestone.

Two modes

Local mode (the default of o4r init): one machine, one team, the server on 127.0.0.1, no authentication. Whoever reaches the port is the owner. Do not expose the port in this mode; o4r doctor warns when the server listens on every interface.

Authenticated mode (o4r auth enable --email you@example.com, or o4r init --auth --email …): every call to the API and the interface needs a signed-in person or an API key. This is the mode for a server or a VPS.

Put a reverse proxy with TLS in front (nginx, Caddy); bind Opifer to 127.0.0.1 and let the proxy reach it. The server trusts the proxy's X-Forwarded-* headers in authenticated mode (o4r auth enable --no-trust-proxy if there is none). The interface works at the root or under a path (https://example.com/opifer/). An nginx example is in the ten-minute guide.

Secrets

Model calls

Tools and sandbox

Inbound and outbound

Interface

Data

Update check

Once a day the server asks registry.npmjs.org for the latest @opifer/cli version, with a plain GET and no data of the installation. "updates": { "check": false } in config.json turns it off.

Emergency stop

POST /v1/companies/:id/stop, o4r stop or the red button: every running turn of the company is interrupted, routines are not claimed, budget reservations are denied, until a person resumes.

Known gaps

This page is rendered from docs/security.md in the repository. Fix it there.