nlweb-auth-multitenancy

nlweb-auth-multitenancy is a skill for Claude Code from OrcaQubits/agentic-commerce-skills-plugins. It costs 83 tokens per session (1,800 once invoked), scanned A, original, MIT.

A guide to adding login and separate site deployments to NLWeb. It covers OAuth, a standard login method used by providers such as Google or GitHub, saved conversations, allowed sites, and tenant-related configuration.

In plain words
What is it for?
Use it when adding user login, keeping conversation history for signed-in users, or hosting several NLWeb sites with controlled access.
Why use it?
It clarifies what NLWeb's login support does and what it does not do. In particular, it distinguishes identifying users from providing detailed permissions or complete data isolation between customers.

Skill for Claude Code

Written for Claude Code: allowed-tools in frontmatter.

Part of the nlweb-protocol plugin — 13 skills, 1 agent shipped together

Good fit Use it when adding user login, keeping conversation history for signed-in users, or hosting several NLWeb sites with controlled access.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add OrcaQubits/agentic-commerce-skills-plugins --skill nlweb-auth-multitenancy
Clone the repo
git clone --depth 1 https://github.com/OrcaQubits/agentic-commerce-skills-plugins

Made for: Claude Code.

Or install nlweb-protocol, the plugin that ships this one along with the rest of its 13 skills, 1 agent.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for nlweb-auth-multitenancy

README.md
[![agentmods](https://agentmods.dev/badge/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy/github.svg)](https://agentmods.dev/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy)
Your own site
<a href="https://agentmods.dev/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy"><img src="https://agentmods.dev/badge/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for nlweb-auth-multitenancy

Your own site · 80×15
<a href="https://agentmods.dev/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy"><img src="https://agentmods.dev/badge/skills/orcaqubits/agentic-commerce-skills-plugins/nlweb-auth-multitenancy.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 83 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,800 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00083 $0.01800
Opus 5 $0.00042 $0.00900
Sonnet 5 $0.00017 $0.00360
Haiku 4.5 $0.00008 $0.00180

Measured 2d ago against content hash ade86e472b3a, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-16, from the pricing page.

Security

Grade A, and why

nlweb-auth-multitenancy scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

nlweb-protocol/skills/nlweb-auth-multitenancy/SKILL.md · 187 lines

How it starts

The opening of the file, as written. The whole thing — 187 lines — stays where its author put it; the contents beside it link to each section on GitHub.

NLWeb Auth & Multitenancy

Before writing code

Fetch live docs:

  1. Fetch https://github.com/nlweb-ai/NLWeb/blob/main/docs/setup-oauth.md for OAuth configuration.
  2. Fetch https://github.com/nlweb-ai/NLWeb/blob/main/docs/nlweb-memory.md for conversation persistence.
  3. Inspect AskAgent/python/webserver/routes/oauth.py for the current OAuth flow.
  4. Inspect AskAgent/python/core/conversation_history.py and storage_providers/ for persistence backends.
  5. Check config/config_oauth.yaml and config/config_storage.yaml for current keys.

Conceptual Architecture

NLWeb's Auth Model — What It Does and Doesn't Do

NLWeb ships OAuth-based user identification — it lets a logged-in user have persistent conversation memory tied to their identity. It does not ship:

  • Fine-grained authorization (per-site ACLs)
  • API key auth for service-to-service callers
  • Multi-tenant data isolation at the retrieval layer

If you need any of those, you build them as middleware on top.

OAuth Providers Supported

Per config_oauth.yaml:

Provider Notes
GitHub Standard OAuth 2.0
Google Standard OAuth 2.0
Microsoft Entra ID / personal accounts
Facebook Standard OAuth 2.0

Adding a new provider means a new client class in the OAuth routes module + a config entry. Verify the current extensibility mechanism in the live code.

OAuth Routes

Route Purpose
GET /api/oauth/login/{provider} Start the OAuth dance
GET /api/oauth/callback/{provider} OAuth callback handler
GET /api/oauth/logout End session
GET /api/oauth/me Current user info

(Verify exact paths in webserver/routes/oauth.py.)

Session Storage

By default, NLWeb stores sessions in-memory or via an aiohttp session backend. For multi-instance deployments, configure a shared session store (Redis, etc.). The session cookie carries the user identity; conversation persistence keys off that identity.

Read the full file on GitHub · 187 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 187 lines · 83 tokens per session scan A ade86e472b3a

Subscribe to this mod's changes

nlweb-auth-multitenancy is a skill published in the GitHub repository OrcaQubits/agentic-commerce-skills-plugins (39 stars, last pushed 2d ago), licensed MIT. It adds 83 tokens to every session and 1,800 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-15.

Related

Other skills, from other repositories

managing-archestra-releases

Runs rolling beta releases, stable patches, and complete stable-line cutovers. Use when backporting fixes, cutting or retiring release branches, configuring release protections, testing artifacts, recovering failed runs, or approving releases.

archestra-ai/archestra · 51 tokens

archestra-dev-testing

Use when deciding whether a change needs a test and at which level — unit, backend route-level integration, MSW-backed frontend integration, or e2e — or when reviewing tests for the "fluff test" anti-pattern. Start here before archestra-dev-backend-tests or archestra-dev-e2e.

archestra-ai/archestra · 68 tokens

migrate-to-archestra

Migrate an existing agentic PoC/pilot (Claude Code project files, MCP configs, hooks, local tools, openclaw config, or similar hand-rolled setup artifacts) into an Archestra instance. Use when the user wants to move, port, or convert an existing agentic setup into an Archestra pilot.

archestra-ai/archestra · 73 tokens

archestra-dev-backend-tests

Use when writing or modifying Archestra backend unit tests (platform/backend/src//.test.ts) — mocking modules, stubbing globals, database fixtures, vitest projects/isolation, or test performance.

archestra-ai/archestra · 46 tokens

archestra-dev-frontend

Use when modifying Archestra frontend Next.js/React code, UI components, forms, TanStack Query hooks, generated API client usage, frontend copy, or documentation links.

archestra-ai/archestra · 40 tokens

archestra-dev-interactions-migrations

Use BEFORE writing or running any Drizzle migration that touches the interactions table (or any other very large, write-hot table). The interactions table is the platform's biggest, append-heavy table — every LLM proxy call writes a row — so a careless migration can take a write-blocking lock and stall the proxy.…

archestra-ai/archestra · 118 tokens