Documentation

Your vault, explained.

Noctis is a client-side encrypted vault. Everything you save is sealed in your browser with AES-256-GCM before it ever leaves your device - and only your Solana wallet can open it.

Overview

What is Noctis?

Noctis is a zero-knowledge vault for the things that would hurt to leak - private notes, passwords, API keys, seed phrases and small confidential files. Unlike cloud notes apps, Noctis never sees your data in a form it can read.

Three properties define it:

  • Client-side encryption - data is encrypted and decrypted entirely in your browser.
  • Wallet-derived keys - your encryption key comes from a single Solana wallet signature. No password, no account.
  • Zero-knowledge storage - the server only ever holds ciphertext, scoped to your wallet by row-level security.
Encryption

How encryption works

Every entry is sealed with AES-256-GCM using the Web Crypto API - the same authenticated encryption trusted by governments and banks. GCM detects any tampering with your ciphertext, so a modified blob simply fails to decrypt.

// in your browser - plaintext never leaves the page
const iv  = crypto.getRandomValues(new Uint8Array(12));
const ct  = await crypto.subtle.encrypt(
  { name: "AES-GCM", iv }, vaultKey, encode(plaintext)
);
// only { iv, ct } is uploaded - opaque ciphertext

Plaintext never touches our servers, your network, or disk. The only place it exists is in the tab you typed it into.

Keys

Wallet-derived keys

When you open the vault, Noctis asks your Solana wallet to sign one fixed message. That signature is deterministic - the same wallet always produces the same bytes - so it can be turned into your encryption key with a KDF, and never has to be stored anywhere.

const sig = await wallet.signMessage(MESSAGE);     // Ed25519
const key = await crypto.subtle.importKey(
  "raw", await sha256(sig), "AES-GCM", false, ["encrypt","decrypt"]
);

No password to remember, nothing on a server to phish, nothing to leak. Your wallet is your identity and your only key.

Storage

Zero-knowledge storage

Noctis stores only ciphertext. Each record is tied to your wallet address through row-level security, so even the database can return your blobs only to you - and can never open them.

In

Encrypt

Plaintext is sealed on your device.

Store

Ciphertext

Only opaque blobs are uploaded.

Out

Decrypt

Re-derive the key locally, unlock instantly.

Quickstart

Get started in three steps

1

Connect your wallet

Open the Vault and connect a Solana wallet such as Phantom.

2

Sign once to unlock

Approve a single signature request. Your key is derived locally - it never leaves your device.

3

Store & retrieve

Add notes, passwords or keys. They are encrypted before upload and decrypted only when you ask.

MCP

Agent-native storage (MCP)

Noctis exposes three Model Context Protocol tools so AI agents like Claude Code, Cursor and Continue can read and write secrets as ciphertext - pulling a value only when needed, decrypting it locally, and never leaving plaintext lying around.

data_store(key, value)   // seal a secret into the vault
data_fetch(key)          // retrieve & decrypt locally
data_list()              // list entry keys (no plaintext)

The MCP server only ever moves ciphertext between your vault and your tools.

Recovery

Recovery & security

Your key is derived from your wallet signature, so your wallet is your recovery. Restore it from its seed phrase and you can re-derive the key and unlock everything.

There is no master key, no admin override and no plaintext copy anywhere on our infrastructure. If a wallet is lost for good, the ciphertext stays sealed forever - by design, no one (including us) can recover it.

FAQ

Frequently asked

Can Noctis read my data?

No. The key that decrypts your vault is derived from your wallet signature and never leaves your device. We store ciphertext and nothing else.

Do I need an account or password?

No email, no password, no signup. You connect your Solana wallet and sign once.

Why AES-256-GCM?

It is fast in the browser, provably strong, and its GCM mode detects any tampering with your ciphertext.