pipal is primarily designed for local, single-user workflows as a thin layer over pi.
The optional HTTP/WebSocket server (pipal serve) can expose access to agent sessions and prompt execution. Treat it as sensitive.
Security fixes are applied on the latest released version on the default branch.
Please report vulnerabilities privately by opening a GitHub security advisory:
If that is unavailable, open an issue with minimal exploit detail and request a private contact channel.
Security-sensitive assets:
- agent files (
AGENTS.md,IDENTITY.md,POLICY.md,USER.md,MEMORY.md) - session history and summaries
- task definitions and daemon behavior
- provider/model configuration (
llm.json)
Primary risks:
- accidental server exposure beyond localhost
- weak/guessable bearer tokens
- accidental leakage of local filesystem context through agent/tool usage
Out of scope (for now):
- multi-tenant isolation guarantees
- hardened sandboxing against a malicious local OS user
- enterprise controls (SSO/SAML, formal compliance controls)
For local use:
- use default localhost bind (
pipal servewithout--host)
For any non-local exposure:
- set
PIPAL_AUTH_TOKENto a long random value - run behind network controls (VPN/firewall/reverse proxy auth/TLS)
- do not expose unauthenticated
pipal serveon the public internet
Pre-exposure verification checklist:
- Server bind is intentional (
--host 0.0.0.0or non-loopback only when needed). PIPAL_AUTH_TOKENis set and kept secret.- External access is filtered (firewall/VPN/reverse proxy policy).
- TLS is enabled at ingress/reverse proxy for untrusted networks.
- You have tested that unauthenticated requests are rejected.
Current server behavior:
- loopback binds may run without authentication
- non-local binds require
PIPAL_AUTH_TOKEN(orAUTH_TOKEN) - CORS is permissive for developer convenience; treat non-local exposure accordingly