# napplet > Apps that travel: small sandboxed Nostr apps, the shells that host them, and the open NIP-5D protocol between them. napplets are sandboxed Nostr web applets that run inside a host shell and reach signing, storage and relays only through it, over the NIP-5D JSON envelope. This site is the napplet showcase, explainer, NAP directory and SDK documentation. Every HTML page has a Markdown copy: `/path/` → `/path/index.md`, `/docs/page.html` → `/docs/page.md`. On napplet.run, sending `Accept: text/markdown` returns the copy at the page's own URL; if it returns HTML, fetch the `.md` path. See [Agent access to napplet.run](https://napplet.run/docs/guide/agent-access.md). Everything here is non-normative. NIP-5D (https://github.com/nostr-protocol/nips/pull/2303) and the NAPs (https://github.com/napplet/naps) are the canonical protocol sources. ## Site - [napplet — Apps that travel.](https://napplet.run/index.md): Build a web app. Give it more places to run. Try napplets, explore shells, and build with open tools and protocols. - [How napplets work — napplet explainer](https://napplet.run/explainer/index.md): Explore the ideas behind napplets: small Nostr apps, host shells, sandbox isolation, and composable clients. The original napplet explainer. - [App store — napplet](https://napplet.run/apps/index.md): Find your next small obsession. Play curated napplets and discover signed releases from the community. - [The protocol](https://napplet.run/protocol/index.md): Explore merged NAP specifications and open proposals. Find capability contracts, follow their discussion, and learn how to propose a NAP. - [Propose a NAP](https://napplet.run/protocol/contribute/index.md): Decide whether your idea belongs in a NAP, a convention, an archetype, or a projection. Follow the upstream template and join the proposal process. ## Docs: Overview - [napplet: Composable Nostr apps](https://napplet.run/docs/index.md): Sandboxed Nostr web applets that delegate signing, storage, and relay access to a host shell over the NIP-5D JSON envelope wire format. ## Docs: Introduction - [What are napplets?](https://napplet.run/docs/guide/index.md): A napplet is a small, single-purpose Nostr web application that runs inside a sandboxed iframe and delegates everything sensitive — signing, storage, relay access — to a host shell. - [NIP-5D explained](https://napplet.run/docs/guide/nip-5d.md): NIP-5D — Nostr Web Applets is the specification that defines how a napplet and its host shell talk to each other. - [Migrating NIP-5D events](https://napplet.run/docs/guide/event-migration.md): This is non-normative migration guidance for the @napplet packages. ## Docs: Getting Started - [Core concepts](https://napplet.run/docs/guide/concepts.md): These are the ideas that recur across every @napplet/ package. - [Getting started](https://napplet.run/docs/guide/getting-started.md): This page walks you from zero to a deployable napplet. - [Tutorial: build a Note Drafts napplet from scratch](https://napplet.run/docs/guide/build-note-drafts-napplet.md): This tutorial builds a small Nostr note composer that runs as a napplet in Kehto/Paja. - [Tutorial: build a Note Drafts napplet from boilerplate](https://napplet.run/docs/guide/build-note-drafts-napplet-from-boilerplate.md): This tutorial builds the same Note Drafts app as the from-scratch tutorial, but starts from @napplet/boilerplate instead of an empty directory. - [Tutorial: build a Note Drafts napplet with an AI agent and the napplet skills](https://napplet.run/docs/guide/build-note-drafts-napplet-with-ai-agent-and-skills.md): This tutorial builds the Note Drafts napplet with a coding agent instead of typing every file yourself. - [Agent skills](https://napplet.run/docs/guide/agent-skills.md): napplet- skills that let a coding agent make, design, build, port, and test a napplet, including its icon artwork. - [Agent access to napplet.run](https://napplet.run/docs/guide/agent-access.md): How AI agents can read napplet.run as Markdown, search its app store, use its WebMCP tools and discover the napplet agent skills. ## Docs: Packages - [Packages](https://napplet.run/docs/packages/index.md): The napplet SDK is a small set of focused, ESM-only packages. - [@napplet/core](https://napplet.run/docs/packages/core.md): JSON envelope types and NAP dispatch infrastructure for the napplet ecosystem. - [@napplet/shim](https://napplet.run/docs/packages/shim.md): Runtime-side helper for injecting selected window.napplet. objects before napplet scripts run. - [@napplet/sdk](https://napplet.run/docs/packages/sdk.md): Named TypeScript exports for napplet developers using a bundler. - [@napplet/nap](https://napplet.run/docs/packages/nap.md): Every active napplet NAP domain as layered subpath exports. - [@napplet/vite-plugin](https://napplet.run/docs/packages/vite-plugin.md): Vite build integration for current NIP-5D manifests. - [@napplet/cli](https://napplet.run/docs/packages/cli.md): Standalone CLI for creating, configuring, inspecting, and deploying napplets. - [@napplet/conformance](https://napplet.run/docs/packages/conformance.md): Framework-agnostic conformance engine for the napplet protocol — lets a napplet self-verify that it conforms to NIP-5D + the NAP wire protocol before publishing. - [@napplet/conformance-cli](https://napplet.run/docs/packages/conformance-cli.md): The headless napplet-conformance runner — drives the @napplet/conformance engine against a napplet in real headless Chromium (via Playwright). - [@napplet/conformance-web](https://napplet.run/docs/packages/conformance-web.md): Browser conformance runtime for live napplet protocol testing. - [@napplet/boilerplate](https://napplet.run/docs/packages/boilerplate.md): Project-only generator behind napplet create. ## Docs: NAP domains - [NAP domain reference](https://napplet.run/docs/naps/index.md): A NAP (Nostr Applet Protocol) is one capability contract between a napplet and its runtime — what the runtime provides (relay access, storage, intents, …) and exactly how a napplet asks for it. - [NAP maturity and opt-in](https://napplet.run/docs/naps/maturity.md): This is non-normative implementation guidance for the @napplet/ packages. - [SHELL](https://napplet.run/docs/naps/shell.md): The runtime may expose shell for environment information. - [THEME](https://napplet.run/docs/naps/theme.md): Read-only shell theme access — colors, fonts, background, and title. - [CONFIG](https://napplet.run/docs/naps/config.md): Declarative per-napplet configuration (JSON Schema-driven). - [KEYS](https://napplet.run/docs/naps/keys.md): Keyboard bindings and action registration — the shell binds keys to named actions. - [NOTIFY](https://napplet.run/docs/naps/notify.md): Shell-rendered notifications, badges, and interaction callbacks. - [MEDIA](https://napplet.run/docs/naps/media.md): Ownership-aware media sessions and playback control. - [LINK](https://napplet.run/docs/naps/link.md): Shell-mediated external link opening. - [IDENTITY](https://napplet.run/docs/naps/identity.md): Read-only user queries — pubkey, profile metadata, follows, … Never signs, encrypts, or decrypts. - [COMMON](https://napplet.run/docs/naps/common.md): Common social actions — public NIP-19 helpers, profile lookup, follows, follow/unfollow, reactions, and reports. - [LISTS](https://napplet.run/docs/naps/lists.md): Runtime-mediated NIP-51 list mutations. - [DM](https://napplet.run/docs/naps/dm.md): Runtime-mediated direct messages. - [OUTBOX](https://napplet.run/docs/naps/outbox.md): Outbox-aware relay routing — getEvent / query / subscribe / publish / resolveRelays; the shell owns NIP-65 relay discovery, fallback, dedup, signature validation, signing, and fanout. - [RELAY](https://napplet.run/docs/naps/relay.md): Low-level Nostr relay proxy — subscribe, publish, and one-shot query through the shell's relay pool. - [COUNT](https://napplet.run/docs/naps/count.md): Runtime-mediated aggregate counts for NIP-01 filters. - [INC](https://napplet.run/docs/naps/inc.md): Inter-napplet communication — topic-based publish/subscribe between napplets. - [INTENT](https://napplet.run/docs/naps/intent.md): Intent calls derive archetype and action from the URI. - [STORAGE](https://napplet.run/docs/naps/storage.md): Scoped key-value storage proxied through the shell — isolated per napplet identity. - [FS](https://napplet.run/docs/naps/fs.md): Shell-mediated virtual filesystem access. - [RESOURCE](https://napplet.run/docs/naps/resource.md): Sandboxed byte fetching (info() -> ResourceInfo, bytes(url, options?) -> Blob, bytesMany(requests) -> ResourceBytesItem[]) over https / blossom (BUD-10 blossom:. URIs) / nostr / data s… - [UPLOAD](https://napplet.run/docs/naps/upload.md): Shell-mediated file/blob upload over NIP-96 + Blossom rails; the shell signs auth and returns NIP-94 metadata. - [CVM](https://napplet.run/docs/naps/cvm.md): Native ContextVM bridge — MCP-over-Nostr (discover / listTools / callTool / listResources / readResource / registry.); the shell owns transport, registry selection, and tool policy. - [GAMEPAD](https://napplet.run/docs/naps/gamepad.md): This non-normative guidance defers to NAP-GAMEPAD. - [BLE](https://napplet.run/docs/naps/ble.md): Runtime-mediated Bluetooth LE/GATT sessions. - [SERIAL](https://napplet.run/docs/naps/serial.md): Runtime-mediated serial device access. - [WEBRTC](https://napplet.run/docs/naps/webrtc.md): Runtime-mediated WebRTC sessions. - [LLM](https://napplet.run/docs/naps/llm.md): This non-normative guide follows the living NAP-LLM proposal. ## Docs: Reference - [NIP-5D spec status](https://napplet.run/docs/spec.md): The napplet packages implement NIP-5D — Nostr Web Applets. ## NAP directory - [NAP-BLE — Runtime-Mediated Bluetooth Low Energy](https://napplet.run/protocol/nap-ble-pr-62/index.md): Open PR: Runtime-Mediated Bluetooth Low Energy. Read the complete upstream specification, with API tables and wire examples. - [NAP-BLOSSOM — Low-Level Blossom Blob Access](https://napplet.run/protocol/nap-blossom-pr-71/index.md): Open PR: Low-Level Blossom Blob Access. Read the complete upstream specification, with API tables and wire examples. - [NAP-CAPTURE — Shell-Mediated Microphone Recording](https://napplet.run/protocol/nap-capture-pr-94/index.md): Draft PR: Shell-Mediated Microphone Recording. Read the complete upstream specification, with API tables and wire examples. - [NAP-CATALOG — Runtime Napplet Catalog](https://napplet.run/protocol/nap-catalog-pr-95/index.md): Open PR: Runtime Napplet Catalog. Read the complete upstream specification, with API tables and wire examples. - [NAP-CLASS-1 — Strict Baseline Class](https://napplet.run/protocol/nap-class-1-pr-17/index.md): Draft PR: Strict Baseline Class. Read the complete upstream specification, with API tables and wire examples. - [NAP-CLASS-2 — User-Approved Explicit-Origin Class](https://napplet.run/protocol/nap-class-2-pr-18/index.md): Draft PR: User-Approved Explicit-Origin Class. Read the complete upstream specification, with API tables and wire examples. - [NAP-CLASS — Napplet Class Authority](https://napplet.run/protocol/nap-class-pr-16/index.md): Draft PR: Napplet Class Authority. Read the complete upstream specification, with API tables and wire examples. - [NAP-COMMON — Common Social Actions](https://napplet.run/protocol/nap-common-pr-67/index.md): Open PR: Common Social Actions. Read the complete upstream specification, with API tables and wire examples. - [NAP-CONFIG — Per-Napplet Declarative Configuration](https://napplet.run/protocol/nap-config-pr-14/index.md): Draft PR: Per-Napplet Declarative Configuration. Read the complete upstream specification, with API tables and wire examples. - [NAP-CONNECT — User-Gated Direct Network Access](https://napplet.run/protocol/nap-connect-pr-19/index.md): Draft PR: User-Gated Direct Network Access. Read the complete upstream specification, with API tables and wire examples. - [NAP-COUNT — Runtime-Mediated Event Counts](https://napplet.run/protocol/nap-count-pr-69/index.md): Open PR: Runtime-Mediated Event Counts. Read the complete upstream specification, with API tables and wire examples. - [NAP-CVM — ContextVM Bridge](https://napplet.run/protocol/nap-cvm-pr-31/index.md): Open PR: ContextVM Bridge. Read the complete upstream specification, with API tables and wire examples. - [NAP-DISPLAY — Runtime-Controlled Pixel Displays](https://napplet.run/protocol/nap-display-pr-97/index.md): Draft PR: Runtime-Controlled Pixel Displays. Read the complete upstream specification, with API tables and wire examples. - [NAP-DM — Direct Messages](https://napplet.run/protocol/nap-dm-pr-74/index.md): Draft PR: Direct Messages. Read the complete upstream specification, with API tables and wire examples. - [NAP-EMAIL — Shell-Mediated Email](https://napplet.run/protocol/nap-email-pr-139/index.md): Draft PR: Shell-Mediated Email. Read the complete upstream specification, with API tables and wire examples. - [NAP-FS — Virtual Filesystem Access](https://napplet.run/protocol/nap-fs-pr-88/index.md): Open PR: Virtual Filesystem Access. Read the complete upstream specification, with API tables and wire examples. - [NAP-GAMEPAD — Shell-Mediated Gamepad Input](https://napplet.run/protocol/nap-gamepad-pr-130/index.md): Open PR: Shell-Mediated Gamepad Input. Read the complete upstream specification, with API tables and wire examples. - [NAP-GIT — Runtime-Mediated Git Repositories](https://napplet.run/protocol/nap-git-pr-137/index.md): Open PR: Runtime-Mediated Git Repositories. Read the complete upstream specification, with API tables and wire examples. - [NAP-HASHTREE — Runtime-Mediated Hashtree Document Trees](https://napplet.run/protocol/nap-hashtree-pr-73/index.md): Draft PR: Runtime-Mediated Hashtree Document Trees. Read the complete upstream specification, with API tables and wire examples. - [NAP-IDENTITY — Read-Only User Identity Queries](https://napplet.run/protocol/nap-identity/index.md): Merged: Read-Only User Identity Queries. Read the complete upstream specification, with API tables and wire examples. - [NAP-INC — Inter-Napplet Communication](https://napplet.run/protocol/nap-inc/index.md): Merged: Inter-Napplet Communication. Read the complete upstream specification, with API tables and wire examples. - [NAP-INTENT — Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent-pr-106/index.md): Open PR: Archetype Intent Dispatcher. Read the complete upstream specification, with API tables and wire examples. - [NAP-INTENT — Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent-pr-128/index.md): Open PR: Archetype Intent Dispatcher. Read the complete upstream specification, with API tables and wire examples. - [NAP-INTENT — Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent/index.md): Merged: Archetype Intent Dispatcher. Read the complete upstream specification, with API tables and wire examples. - [NAP-KEYS — Keyboard Forwarding and Action Keybindings](https://napplet.run/protocol/nap-keys-pr-9/index.md): Open PR: Keyboard Forwarding and Action Keybindings. Read the complete upstream specification, with API tables and wire examples. - [NAP-LINK — Shell-Mediated Link Opening](https://napplet.run/protocol/nap-link-pr-53/index.md): Open PR: Shell-Mediated Link Opening. Read the complete upstream specification, with API tables and wire examples. - [NAP-LISTS — Runtime-Mediated Nostr List Mutation](https://napplet.run/protocol/nap-lists-pr-68/index.md): Open PR: Runtime-Mediated Nostr List Mutation. Read the complete upstream specification, with API tables and wire examples. - [NAP-LLM — User-selected language models](https://napplet.run/protocol/nap-llm-pr-134/index.md): Open PR: User-selected language models. Read the complete upstream specification, with API tables and wire examples. - [NAP-LOCATION — Shell-Mediated Geolocation](https://napplet.run/protocol/nap-location-pr-125/index.md): Draft PR: Shell-Mediated Geolocation. Read the complete upstream specification, with API tables and wire examples. - [NAP-MEDIA — Media Session Control](https://napplet.run/protocol/nap-media-pr-10/index.md): Open PR: Media Session Control. Read the complete upstream specification, with API tables and wire examples. - [NAP-MEDIA — Media Session Control](https://napplet.run/protocol/nap-media-pr-133/index.md): Draft PR: Media Session Control. Read the complete upstream specification, with API tables and wire examples. - [NAP-MESH — Hop-Limited Circle Publish and Subscribe](https://napplet.run/protocol/nap-mesh-pr-122/index.md): Draft PR: Hop-Limited Circle Publish and Subscribe. Read the complete upstream specification, with API tables and wire examples. - [NAP-MOTION — Shell-Mediated Device Motion and Orientation](https://napplet.run/protocol/nap-motion-pr-124/index.md): Draft PR: Shell-Mediated Device Motion and Orientation. Read the complete upstream specification, with API tables and wire examples. - [NAP-NAVIGATION — Runtime-Maintained Intent History](https://napplet.run/protocol/nap-navigation-pr-126/index.md): Open PR: Runtime-Maintained Intent History. Read the complete upstream specification, with API tables and wire examples. - [NAP-NOTIFY — Shell-Rendered Notifications](https://napplet.run/protocol/nap-notify-pr-11/index.md): Open PR: Shell-Rendered Notifications. Read the complete upstream specification, with API tables and wire examples. - [NAP-NZB — Runtime-mediated NZB downloads](https://napplet.run/protocol/nap-nzb-pr-136/index.md): Open PR: Runtime-mediated NZB downloads. Read the complete upstream specification, with API tables and wire examples. - [NAP-OUTBOX — Outbox-Aware Relay Access](https://napplet.run/protocol/nap-outbox-pr-32/index.md): Open PR: Outbox-Aware Relay Access. Read the complete upstream specification, with API tables and wire examples. - [NAP-POW — NIP-13 Proof-of-Work Miner](https://napplet.run/protocol/nap-pow-pr-39/index.md): Open PR: NIP-13 Proof-of-Work Miner. Read the complete upstream specification, with API tables and wire examples. - [NAP-RELAY — Relay Proxy](https://napplet.run/protocol/nap-relay-pr-2/index.md): Open PR: Relay Proxy. Read the complete upstream specification, with API tables and wire examples. - [NAP-RESOURCE — Sandboxed Resource Fetching](https://napplet.run/protocol/nap-resource-pr-80/index.md): Open PR: Sandboxed Resource Fetching. Read the complete upstream specification, with API tables and wire examples. - [NAP-SERIAL — Shell-Mediated Serial Device Access](https://napplet.run/protocol/nap-serial-pr-61/index.md): Open PR: Shell-Mediated Serial Device Access. Read the complete upstream specification, with API tables and wire examples. - [NAP-SHELL — Optional Shell Environment and Readiness](https://napplet.run/protocol/nap-shell/index.md): Merged: Optional Shell Environment and Readiness. Read the complete upstream specification, with API tables and wire examples. - [NAP-SOULSEEK — Runtime-Mediated Soulseek File Discovery and Downloads](https://napplet.run/protocol/nap-soulseek-pr-135/index.md): Open PR: Runtime-Mediated Soulseek File Discovery and Downloads. Read the complete upstream specification, with API tables and wire examples. - [NAP-STORAGE — Scoped Key-Value Storage](https://napplet.run/protocol/nap-storage-pr-3/index.md): Open PR: Scoped Key-Value Storage. Read the complete upstream specification, with API tables and wire examples. - [NAP-SYSTEM — Read-Only Runtime System Information](https://napplet.run/protocol/nap-system-pr-64/index.md): Draft PR: Read-Only Runtime System Information. Read the complete upstream specification, with API tables and wire examples. - [NAP-THEME — Shell-Provided Theming](https://napplet.run/protocol/nap-theme/index.md): Merged: Shell-Provided Theming. Read the complete upstream specification, with API tables and wire examples. - [NAP-TORRENT — Runtime-Mediated Torrents](https://napplet.run/protocol/nap-torrent-pr-72/index.md): Open PR: Runtime-Mediated Torrents. Read the complete upstream specification, with API tables and wire examples. - [NAP-UPLOAD — Media and Blob Upload](https://napplet.run/protocol/nap-upload-pr-33/index.md): Open PR: Media and Blob Upload. Read the complete upstream specification, with API tables and wire examples. - [NAP-VALUE — Value Transfer](https://napplet.run/protocol/nap-value-pr-30/index.md): Draft PR: Value Transfer. Read the complete upstream specification, with API tables and wire examples. - [NAP-WEBRTC — Runtime-Mediated WebRTC Signaling](https://napplet.run/protocol/nap-webrtc-pr-59/index.md): Open PR: Runtime-Mediated WebRTC Signaling. Read the complete upstream specification, with API tables and wire examples. - [NAP-WORKER — Runtime-owned Workers](https://napplet.run/protocol/nap-worker-pr-107/index.md): Draft PR: Runtime-owned Workers. Read the complete upstream specification, with API tables and wire examples. ## Agent skills - [Agent Skills discovery index](https://napplet.run/.well-known/agent-skills/index.json): Agent Skills Discovery RFC v0.2.0 index with sha256 digests - [napplet-build](https://napplet.run/.well-known/agent-skills/napplet-build/SKILL.md): Use when implementing a napplet from a napplet-design spec - scaffold with `napplet create` + `napplet init`, keep the boilerplate substrate, edit only project surfaces (vite.config requires, index.html, src/main.ts, src/styles.css), strip the starter masthead and website layout per napplet-ui, call shell capabilities SDK-first (napplet-sdk), produce the single-file artifact, validate with pnpm verify + conformance, and preview through Paja. - [napplet-design](https://napplet.run/.well-known/agent-skills/napplet-design/SKILL.md): Use FIRST when planning a napplet (sandboxed Nostr iframe applet), before any code - turns an idea into a short build spec - the sandbox authority contract, which shipped NAP domains own each feature (OUTBOX-first, relay as escape hatch), hard requires vs optional fallbacks, the form-factor plan (compact applet, any size from widget to full screen, declared minimum only if the UI truly breaks), theme, and data flow. - [napplet-icon](https://napplet.run/.well-known/agent-skills/napplet-icon/SKILL.md): Use when designing, generating, or refining a napplet app icon, favicon, or app identity mark. - [napplet-interop](https://napplet.run/.well-known/agent-skills/napplet-interop/SKILL.md): Use only when a napplet talks to other napplets - NAP-INC topics (inc.emit / inc.on), NAP-INTENT dispatch (intent.invoke / intent.open), archetype manifest metadata, and the stable queryless convention identity rule (napplet:/). - [napplet-make](https://napplet.run/.well-known/agent-skills/napplet-make/SKILL.md): Use when a user asks to create, build, implement, prototype, or port a complete napplet (sandboxed Nostr iframe applet) in one prompt. - [napplet-migrate](https://napplet.run/.well-known/agent-skills/napplet-migrate/SKILL.md): Migrate legacy NIP-5D manifest events or deployment projects to the current artifact-hash schema, review CLI format choices, and explain event-pointer and shell identity compatibility. - [napplet-port](https://napplet.run/.well-known/agent-skills/napplet-port/SKILL.md): Use when converting an existing Nostr web app, client, or widget into a napplet - inventory the app-owned relay, signing, storage, network, media, shortcut, and routing layers, map each feature to the shipped NAP boundary (OUTBOX-first, relay as escape hatch), split monoliths into focused applets, strip the website chrome, and hand a clean inventory to napplet-design / napplet-build. - [napplet-port-napp](https://napplet.run/.well-known/agent-skills/napplet-port-napp.tar.gz): Port an eskema/nostrapps NAPP (metadata.json, window.napp, window.nostrdb and launcher NIP-07 bridge) into a working NIP-5D + NAP napplet in one request. - [napplet-sdk](https://napplet.run/.well-known/agent-skills/napplet-sdk/SKILL.md): Reference for calling shell capabilities from napplet code through @napplet/sdk - the current package-implemented NAP domains, OUTBOX-first reads and publishes, the social NAPs (common, lists, count, dm), relay as an explicit escape hatch, scoped storage, read-only identity, resource byte fetching, config, theme, keys, and the optional-domain availability pattern. - [napplet-test](https://napplet.run/.well-known/agent-skills/napplet-test/SKILL.md): Use to verify a napplet before publishing - build, run protocol conformance with napplet-conformance (real Chromium, reference shell), interpret failures, audit the OUTBOX-first boundaries and forbidden browser-authority surfaces, confirm the single-file artifact, run the applet UI checks (no title header, four frame sizes, both themes, minimum notice), scenario smoke tests, Paja preview, and CI wiring. - [napplet-ui](https://napplet.run/.well-known/agent-skills/napplet-ui/SKILL.md): Use whenever you write or change napplet markup, CSS, or layout - the applet visual contract. ## Optional - [Full site text](https://napplet.run/llms-full.txt) - [Full docs text](https://napplet.run/docs/llms-full.txt)