May 03, 2026
The past three months have been some of our most productive. We shipped a full public API, built an MCP server for AI agents, introduced a hosted authentication layer, added Nix runtime support, hardened our networking stack, and gave self-hosted customers a complete billing lifecycle. Here's the full rundown.
The single biggest theme of this period was making Stormkit programmable. We shipped a consistent WithAPIKey middleware layer and built out a full suite of REST endpoints:
All endpoints use the same API key authentication model, with keys scoped to either a team, an environment, or a user. Speaking of which — user-level API keys are now available from your account settings, giving individuals programmatic access to everything in their Stormkit account without sharing team credentials.
On the security side, API keys are now stored as SHA-256 hashes in the database. The raw token is shown only once at creation time. Existing keys continue to work without any migration required.
We shipped an MCP (Model Context Protocol) server endpoint, making Stormkit natively accessible to AI agents. The first tool, create_app, lets an agent provision a new application directly — no UI required. With the deployment and environment endpoints already in place, an agent can now manage the full app lifecycle: create, configure, deploy, and publish.
This is the foundation for a genuinely agent-friendly hosting platform.
We built SkAuth — a hosted authentication layer that any application running on Stormkit can plug into. No third-party auth service required. This quarter's work included:
/_stormkit/auth/registerGET /v1/auth/users public API endpoint for retrieving your user listSkAuth is currently behind a feature flag. Reach out if you'd like early access.
Server-side deployments now support Nix as a runtime environment:
flake.nix is detected, all commands are automatically wrapped with nix developflake.nix is copied to the server output directory so environments are fully reproduciblenix develop when a flake is presentThe mise integration also improved significantly this quarter: tool paths are injected into the CI environment, duplicate .bashrc activation was eliminated, and mise trust now runs non-interactively so it never blocks a headless build.
The HTTP layer received some serious hardening:
X-Forwarded-For spoofing is now blocked at the edgeremoteAddress and remotePort are injected into lambda invocationsSTORMKIT_HTTP_PROXY_TIMEOUT environment variable lets you configure the proxy timeouthttpsServe implementation replaced certmagic.HTTPS, removing hardcoded server timeoutshttp.TimeoutHandlerSelf-hosted instances can now handle their own billing lifecycle end-to-end:
api.stormkit.io deep linkOne subtle but important fix: stale service discovery entries are now evicted via a TTL heartbeat. Previously, a crashed instance could linger in the registry indefinitely, causing traffic to be routed to a dead node. The heartbeat interval and TTL are both configurable. On top of that, a nil-pointer panic when restarting a failed deployment was fixed, and redirect rule validation was added to environment updates.
YYYY.MM.DD.MICRO) for release namingThree months, a lot of surface area. The public API and MCP work in particular set the foundation for what's coming next: making Stormkit a first-class target for AI-driven deployment workflows.