<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Perishable — notes</title><description>Notes on client-side AI key safety, short-lived tokens, and proxies.</description><link>https://perishable.skelfresearch.com/</link><language>en-us</language><item><title>Why a proxy beats a serverless function for AI key safety</title><link>https://perishable.skelfresearch.com/blog/proxy-vs-serverless-function/</link><guid isPermaLink="true">https://perishable.skelfresearch.com/blog/proxy-vs-serverless-function/</guid><description>A serverless function can hide your API key. It will also cost you streaming, latency, observability, and your sanity. Here is the trade space, drawn honestly.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>architecture</category><category>serverless</category><category>streaming</category></item><item><title>Short-lived tokens for AI: the OAuth-style answer</title><link>https://perishable.skelfresearch.com/blog/short-lived-tokens-oauth-style/</link><guid isPermaLink="true">https://perishable.skelfresearch.com/blog/short-lived-tokens-oauth-style/</guid><description>OAuth solved this problem for the web a decade ago. Here is what the same idea looks like wrapped around an AI provider&apos;s API.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><category>jwt</category><category>sessions</category><category>design</category></item><item><title>Your client-side AI key is in 4 mobile screenshots already</title><link>https://perishable.skelfresearch.com/blog/client-side-ai-key-screenshots/</link><guid isPermaLink="true">https://perishable.skelfresearch.com/blog/client-side-ai-key-screenshots/</guid><description>A walkthrough of how API keys baked into mobile and browser bundles get extracted in minutes, and what to do other than pray.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>client-side</category><category>threat-model</category><category>mobile</category></item></channel></rss>