Raw session tokens stay out of storage
The browser carries an opaque value. The server combines digest comparison, absolute expiry, idle expiry, rotation and revocation.
GuildGate keeps OAuth, sessions, CSRF, authorization, rate limits, audit records and realtime checks together on the server. Your UI and database stay under your control.
npm install @kavtuai/guildgateCopied/guilds/:id/settingsYou decide who may change each resource. GuildGate makes sure the same checks run in the same order for every protected write.
The browser carries an opaque value. The server combines digest comparison, absolute expiry, idle expiry, rotation and revocation.
Input, resource, origin, session, CSRF, user permission, bot permission, idempotency and resource locks do not drift across route files.
Implement the store contracts with PostgreSQL, MySQL, MongoDB, SQLite, Redis, an existing ORM or a private storage service.
WebSocket, Socket.IO and SSE connections apply session, guild access, sequencing, replay and backpressure rules.
An action definition does more than wrap an HTTP route. It can connect idempotency, concurrent-write protection, transaction hooks, cache invalidation and audit events to the same lifecycle.
Read the action layerconst updateSettings = gate.action({
name: "guild.settings.update",
parse: parseSettings,
resource: ({ guildId }) => ({
type: "guild",
id: guildId,
}),
authorize: canManageGuild,
transaction: { required: true, isolation: "serializable" },
execute: saveSettings,
invalidate: ({ guildId }) => [`guild:${guildId}:settings`],
});The verification console does not open a shell or send network requests. It evaluates documented origin, session, store, permission, rate-limit and realtime examples.