An open foundation / Protocol

# Small apps. Shared contracts.

NAPs describe the capabilities a runtime offers a napplet. Explore the specifications, see what’s being proposed, and help shape what comes next.

[Explore the NAPs ↓](https://napplet.run/protocol/#directory)[Propose a NAP →](https://napplet.run/protocol/contribute/)

[01 / Identity

## NIP-5D ↗

The manifest that describes a napplet.

](https://github.com/nostr-protocol/nips/pull/2303)[02 / Web projection

## NIP-5D ↗

The proposed web binding between applet and shell.

](https://github.com/nostr-protocol/nips/pull/2303)[03 / Capabilities

## NAPs ↗

The contracts, their registry, and open discussion.

](https://github.com/napplet/naps)

The capability directory

## Merged & in motion.

**5** merged · **46** proposed changes

“Merged” means a spec file exists on the repository’s default branch. Open and draft PRs are proposals, including amendments. Upstream status is shown separately; deferred proposals are dormant. Shipped implementation maturity is a domain-wide package assessment, not proof that every amendment is implemented. All capabilities remain subject to change.

Merged NAP specifications and open NAP pull requests
| NAP / domain | Capability | Repository state | Upstream status | Shipped implementation |
| --- | --- | --- | --- | --- |
| [NAP-IDENTITY](https://napplet.run/protocol/nap-identity/) identity | [Read-Only User Identity Queries](https://napplet.run/protocol/nap-identity/) | Merged | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-INC](https://napplet.run/protocol/nap-inc/) inc | [Inter-Napplet Communication](https://napplet.run/protocol/nap-inc/) | Merged | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-INTENT](https://napplet.run/protocol/nap-intent/) intent | [Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent/) | Merged | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-SHELL](https://napplet.run/protocol/nap-shell/) shell | [Optional Shell Environment and Readiness](https://napplet.run/protocol/nap-shell/) | Merged | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-THEME](https://napplet.run/protocol/nap-theme/) theme | [Shell-Provided Theming](https://napplet.run/protocol/nap-theme/) | Merged | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-BLE](https://napplet.run/protocol/nap-ble-pr-62/) ble | [Runtime-Mediated Bluetooth Low Energy](https://napplet.run/protocol/nap-ble-pr-62/) | Open PRPR #62 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-BLOSSOM](https://napplet.run/protocol/nap-blossom-pr-71/) blossom | [Low-Level Blossom Blob Access](https://napplet.run/protocol/nap-blossom-pr-71/) | Open PRPR #71 | Not listedDocument: draft | Not shipped |
| [NAP-CATALOG](https://napplet.run/protocol/nap-catalog-pr-95/) catalog | [Runtime Napplet Catalog](https://napplet.run/protocol/nap-catalog-pr-95/) | Open PRPR #95 | Not listedDocument: draft | Not shipped |
| [NAP-COMMON](https://napplet.run/protocol/nap-common-pr-67/) common | [Common Social Actions](https://napplet.run/protocol/nap-common-pr-67/) | Open PRPR #67 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-COUNT](https://napplet.run/protocol/nap-count-pr-69/) count | [Runtime-Mediated Event Counts](https://napplet.run/protocol/nap-count-pr-69/) | Open PRPR #69 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-CVM](https://napplet.run/protocol/nap-cvm-pr-31/) cvm | [ContextVM Bridge](https://napplet.run/protocol/nap-cvm-pr-31/) | Open PRPR #31 | DraftDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-FS](https://napplet.run/protocol/nap-fs-pr-88/) fs | [Virtual Filesystem Access](https://napplet.run/protocol/nap-fs-pr-88/) | Open PRPR #88 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-GAMEPAD](https://napplet.run/protocol/nap-gamepad-pr-130/) gamepad | [Shell-Mediated Gamepad Input](https://napplet.run/protocol/nap-gamepad-pr-130/) | Open PRPR #130 | Not listedDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-GIT](https://napplet.run/protocol/nap-git-pr-137/) git | [Runtime-Mediated Git Repositories](https://napplet.run/protocol/nap-git-pr-137/) | Open PRPR #137 | Not listedDocument: draft | Not shipped |
| [NAP-INTENT](https://napplet.run/protocol/nap-intent-pr-106/) intent | [Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent-pr-106/)Proposed amendment | Open PRPR #106 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-INTENT](https://napplet.run/protocol/nap-intent-pr-128/) intent | [Archetype Intent Dispatcher](https://napplet.run/protocol/nap-intent-pr-128/)Proposed amendment | Open PRPR #128 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-KEYS](https://napplet.run/protocol/nap-keys-pr-9/) keys | [Keyboard Forwarding and Action Keybindings](https://napplet.run/protocol/nap-keys-pr-9/) | Open PRPR #9 | DraftDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-LINK](https://napplet.run/protocol/nap-link-pr-53/) link | [Shell-Mediated Link Opening](https://napplet.run/protocol/nap-link-pr-53/) | Open PRPR #53 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-LISTS](https://napplet.run/protocol/nap-lists-pr-68/) lists | [Runtime-Mediated Nostr List Mutation](https://napplet.run/protocol/nap-lists-pr-68/) | Open PRPR #68 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-LLM](https://napplet.run/protocol/nap-llm-pr-134/) llm | [User-selected language models](https://napplet.run/protocol/nap-llm-pr-134/) | Open PRPR #134 | Not listedDocument: draft | [exploratory](https://napplet.run/docs/naps/maturity.html) |
| [NAP-MEDIA](https://napplet.run/protocol/nap-media-pr-10/) media | [Media Session Control](https://napplet.run/protocol/nap-media-pr-10/) | Open PRPR #10 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-NAVIGATION](https://napplet.run/protocol/nap-navigation-pr-126/) navigation | [Runtime-Maintained Intent History](https://napplet.run/protocol/nap-navigation-pr-126/) | Open PRPR #126 | Not listedDocument: draft | Not shipped |
| [NAP-NOTIFY](https://napplet.run/protocol/nap-notify-pr-11/) notify | [Shell-Rendered Notifications](https://napplet.run/protocol/nap-notify-pr-11/) | Open PRPR #11 | DraftDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-NZB](https://napplet.run/protocol/nap-nzb-pr-136/) nzb | [Runtime-mediated NZB downloads](https://napplet.run/protocol/nap-nzb-pr-136/) | Open PRPR #136 | Not listedDocument: draft | Not shipped |
| [NAP-OUTBOX](https://napplet.run/protocol/nap-outbox-pr-32/) outbox | [Outbox-Aware Relay Access](https://napplet.run/protocol/nap-outbox-pr-32/) | Open PRPR #32 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-POW](https://napplet.run/protocol/nap-pow-pr-39/) pow | [NIP-13 Proof-of-Work Miner](https://napplet.run/protocol/nap-pow-pr-39/) | Open PRPR #39 | DraftDocument: draft | Not shipped |
| [NAP-RELAY](https://napplet.run/protocol/nap-relay-pr-2/) relay | [Relay Proxy](https://napplet.run/protocol/nap-relay-pr-2/) | Open PRPR #2 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-RESOURCE](https://napplet.run/protocol/nap-resource-pr-80/) resource | [Sandboxed Resource Fetching](https://napplet.run/protocol/nap-resource-pr-80/) | Open PRPR #80 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-SERIAL](https://napplet.run/protocol/nap-serial-pr-61/) serial | [Shell-Mediated Serial Device Access](https://napplet.run/protocol/nap-serial-pr-61/) | Open PRPR #61 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-SOULSEEK](https://napplet.run/protocol/nap-soulseek-pr-135/) soulseek | [Runtime-Mediated Soulseek File Discovery and Downloads](https://napplet.run/protocol/nap-soulseek-pr-135/) | Open PRPR #135 | Not listedDocument: draft | Not shipped |
| [NAP-STORAGE](https://napplet.run/protocol/nap-storage-pr-3/) storage | [Scoped Key-Value Storage](https://napplet.run/protocol/nap-storage-pr-3/) | Open PRPR #3 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-TORRENT](https://napplet.run/protocol/nap-torrent-pr-72/) torrent | [Runtime-Mediated Torrents](https://napplet.run/protocol/nap-torrent-pr-72/) | Open PRPR #72 | Not listedDocument: draft | Not shipped |
| [NAP-UPLOAD](https://napplet.run/protocol/nap-upload-pr-33/) upload | [Media and Blob Upload](https://napplet.run/protocol/nap-upload-pr-33/) | Open PRPR #33 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-WEBRTC](https://napplet.run/protocol/nap-webrtc-pr-59/) webrtc | [Runtime-Mediated WebRTC Signaling](https://napplet.run/protocol/nap-webrtc-pr-59/) | Open PRPR #59 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-CAPTURE](https://napplet.run/protocol/nap-capture-pr-94/) capture | [Shell-Mediated Microphone Recording](https://napplet.run/protocol/nap-capture-pr-94/) | Draft PRPR #94 | Not listedDocument: draft | Not shipped |
| [NAP-CLASS](https://napplet.run/protocol/nap-class-pr-16/) class | [Napplet Class Authority](https://napplet.run/protocol/nap-class-pr-16/) | Draft PRPR #16 | DeferredDocument: draft | Not shipped |
| [NAP-CLASS-1](https://napplet.run/protocol/nap-class-1-pr-17/) Domain not declared | [Strict Baseline Class](https://napplet.run/protocol/nap-class-1-pr-17/) | Draft PRPR #17 | DeferredDocument: draft | Not shipped |
| [NAP-CLASS-2](https://napplet.run/protocol/nap-class-2-pr-18/) Domain not declared | [User-Approved Explicit-Origin Class](https://napplet.run/protocol/nap-class-2-pr-18/) | Draft PRPR #18 | DeferredDocument: draft | Not shipped |
| [NAP-CONFIG](https://napplet.run/protocol/nap-config-pr-14/) config | [Per-Napplet Declarative Configuration](https://napplet.run/protocol/nap-config-pr-14/) | Draft PRPR #14 | DraftDocument: draft | [exploratory](https://napplet.run/docs/naps/maturity.html) |
| [NAP-CONNECT](https://napplet.run/protocol/nap-connect-pr-19/) connect | [User-Gated Direct Network Access](https://napplet.run/protocol/nap-connect-pr-19/) | Draft PRPR #19 | DeferredDocument: draft | Not shipped |
| [NAP-DISPLAY](https://napplet.run/protocol/nap-display-pr-97/) display | [Runtime-Controlled Pixel Displays](https://napplet.run/protocol/nap-display-pr-97/) | Draft PRPR #97 | DraftDocument: draft | Not shipped |
| [NAP-DM](https://napplet.run/protocol/nap-dm-pr-74/) dm | [Direct Messages](https://napplet.run/protocol/nap-dm-pr-74/) | Draft PRPR #74 | Not listedDocument: draft | [experimental](https://napplet.run/docs/naps/maturity.html) |
| [NAP-EMAIL](https://napplet.run/protocol/nap-email-pr-139/) email | [Shell-Mediated Email](https://napplet.run/protocol/nap-email-pr-139/) | Draft PRPR #139 | Not listedDocument: draft | Not shipped |
| [NAP-HASHTREE](https://napplet.run/protocol/nap-hashtree-pr-73/) hashtree | [Runtime-Mediated Hashtree Document Trees](https://napplet.run/protocol/nap-hashtree-pr-73/) | Draft PRPR #73 | Not listedDocument: draft | Not shipped |
| [NAP-LOCATION](https://napplet.run/protocol/nap-location-pr-125/) location | [Shell-Mediated Geolocation](https://napplet.run/protocol/nap-location-pr-125/) | Draft PRPR #125 | Not listedDocument: draft | Not shipped |
| [NAP-MEDIA](https://napplet.run/protocol/nap-media-pr-133/) media | [Media Session Control](https://napplet.run/protocol/nap-media-pr-133/) | Draft PRPR #133 | DraftDocument: draft | [supported](https://napplet.run/docs/naps/maturity.html) |
| [NAP-MESH](https://napplet.run/protocol/nap-mesh-pr-122/) mesh | [Hop-Limited Circle Publish and Subscribe](https://napplet.run/protocol/nap-mesh-pr-122/) | Draft PRPR #122 | Not listedDocument: draft | Not shipped |
| [NAP-MOTION](https://napplet.run/protocol/nap-motion-pr-124/) motion | [Shell-Mediated Device Motion and Orientation](https://napplet.run/protocol/nap-motion-pr-124/) | Draft PRPR #124 | Not listedDocument: draft | Not shipped |
| [NAP-SYSTEM](https://napplet.run/protocol/nap-system-pr-64/) system | [Read-Only Runtime System Information](https://napplet.run/protocol/nap-system-pr-64/) | Draft PRPR #64 | Not listedDocument: draft | Not shipped |
| [NAP-VALUE](https://napplet.run/protocol/nap-value-pr-30/) value | [Value Transfer](https://napplet.run/protocol/nap-value-pr-30/) | Draft PRPR #30 | DraftDocument: draft | Not shipped |
| [NAP-WORKER](https://napplet.run/protocol/nap-worker-pr-107/) worker | [Runtime-owned Workers](https://napplet.run/protocol/nap-worker-pr-107/) | Draft PRPR #107 | Not listedDocument: draft | Not shipped |

Have a missing capability in mind?

## Start with the boundary.

A runtime API, a shared message shape, and a napplet role belong in different places.

[Find the right proposal →](https://napplet.run/protocol/contribute/)
