Perishable / skelfresearch
FAQ

Questions before you wire it in.

Short, honest answers — including where the answer is "no". If yours isn't here, get in touch or open an issue on GitHub.

What does Perishable actually do?

It is a self-hosted Node proxy plus a browser SDK that lets client-side apps call OpenAI-compatible APIs without exposing the upstream key. The proxy holds the real key; the client gets a short-lived, fingerprint-bound JWT. Published on npm as perishable, MIT licensed.

Is it a hosted service?

No. There is no Perishable cloud. You run the process — via npx perishable-proxy or by embedding new server.PerishableServer({…}) in your own Node service. Your traffic never leaves your infrastructure.

Which providers work with it?

Anything that speaks the OpenAI API shape: OpenAI itself, Anthropic (via an OpenAI-compatible base URL), OpenRouter, and a local Ollama. Point OPENAI_BASE_URL at the endpoint and the same session machinery applies.

Is it bot-proof?

No — and it does not claim to be. Fingerprinting plus entropy collection is bot-resistance, not bot-proofing. A determined attacker driving a real browser can still obtain a session; the design raises the cost of casual, high-volume abuse, which is the common failure mode.

Does it replace my authentication?

No. A fingerprint-bound JWT is not a user login. If you need "this is logged-in user 42" or authorization on sensitive actions, you still need your own auth system alongside the proxy.

How do sessions expire?

Sessions are short-lived JWTs bound to a client fingerprint, with a TTL you control. The browser SDK refreshes them before expiry via sessionOptions.expiryBuffer, so a leaked token stops working within minutes rather than lingering.

How does rate limiting work?

The proxy applies per-fingerprint rate limiting — configurable points-per-window with an optional block duration. It is enough to stop a casual abuser from running up your bill; it is not a substitute for provider-side quotas.

Is it open source?

Yes, MIT licensed, maintained by Skelf-Research. Source is on GitHub, the package is on npm as perishable, and the reference docs live at docs.skelfresearch.com/perishable/.