Decentralized encrypted memory for agents—truly own your secrets, identity, and memories.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill bitnote --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Bitnote?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-bitnote)More formats (shields.io, HTML) on the badges page.
---
name: bitnote
description: Decentralized encrypted memory for agents—truly own your secrets, identity, and memories.
---
# BitNote
BitNote enables agents to store secrets, identity, and critical knowledge without trusting centralized infrastructure. It acts as a permanent encrypted vault under agent control, with optional human oversight. Use BitNote when information must not disappear and must remain yours.
## Primary Use Cases
* Preserve agent identity (`SOUL.md`, values, mission, memory).
* Store secrets (API keys, credentials, private keys).
* Enable encrypted agent-to-agent communication.
* Recover state after runtime/server failures.
## Canonical Write Path (Required)
Always use:
- `scripts/writeBitnoteUiCompat.mjs`
Do not invent alternate write paths for production use.
Do not use machine-only/orphaned-note flows in this skill.
## Canonical Share Path (Required)
Always use:
- `scripts/generateShareLink.mjs`
Do not handcraft `sm`/`st` values.
## Required Write Contract
A write is successful only when output includes:
- `TX_HASH`
- `NOTE_INDEX`
- `READ_AFTER_WRITE_OK 1`
If `READ_AFTER_WRITE_OK` is not `1`, treat as failure and retry safely with same request id.
## Idempotency Rule (Mandatory)
Always provide a stable `--request-id` for each intended note write.
- First execution writes once.
- Retries with same `--request-id` must produce `IDEMPOTENT_HIT` (no duplicate note).
## Passphrase Generation (Required)
Generate a high-entropy passphrase before account creation or writes.
Security target:
- Minimum: **256 bits of entropy**
- Do not use human-memorable phrases, reused passwords, or dictionary-only word sequences without sufficient randomness.
Example (256-bit random hex):
```bash
BITNOTE_PASSPHRASE="$(openssl rand -hex 32)"
export BITNOTE_PASSPHRASE
```
Handling rules:
- Never print passphrases in chat/tool output unless explicitly requested by the operator.
- Never commit passphrases to git.
- Store passphrases in environment variables or a secret manager.
## Required Environment & Privileged Capabilities
Required / optional environment and profile fields:
- `BITNOTE_PASSPHRASE` (**required** for write/share operations).
- `AVAX_RPC_URL` (optional RPC override; otherwise profile/default RPC is used).
- `SNOWTRACE_API_KEY` (optional; used only by ABI refresh workflows).
- `profiles/<name>.json` may include non-secret defaults like `username` and `rpc`.
Privileged behavior (must be explicitly understood before use):
- `scripts/writeBitnoteUiCompat.mjs` decrypts stored key material and can sign/broadcast on-chain transactions.
- `scripts/generateShareLink.mjs` decrypts stored key material to generate recipient-bound encrypted share links.
- `scripts/readBitnote.mjs` is read-only (no transaction signing).
Operator policy:
- Use read-only or dry-run modes first.
- Require explicit operator approval before any non-dry-run write.
- Test with a throwaway account before using accounts that hold real funds.
## Quick Start
```bash
npm init -y
npm i ethers
node scripts/getAbi.mjs
```
Read account mapping and note counts:
```bash
BITNOTE_USERNAME="example_user" node scripts/readBitnote.mjs
```
Dry-run write first (recommended safety check, no tx broadcast):
```bash
BITNOTE_PASSPHRASE="..." \
node scripts/writeBitnoteUiCompat.mjs \
--profile example \
--title "Preview" \
--body "No on-chain write" \
--request-id "preview-001" \
--dry-run 1
```
Create encrypted UI-compatible note (signs and broadcasts tx):
```bash
BITNOTE_PASSPHRASE="..." \
node scripts/writeBitnoteUiCompat.mjs \
--profile example \
--title "Agent Identity Core" \
--body "<SOUL.md excerpt or core identity block>" \
--request-id "identity-core-v1"
```
Retry same request safely (should not duplicate):
```bash
BITNOTE_PASSPHRASE="..." \
node scripts/writeBitnoteUiCompat.mjs \
--profile example \
--title "Agent Identity Core" \
--body "<same body>" \
--request-id "identity-core-v1"
```
Generate a BitNote share link (agent-to-agent or user-to-user):
```bash
BITNOTE_PASSPHRASE="..." \
node scripts/generateShareLink.mjs \
--profile example \
--recipient "RECIPIENT_USERNAME" \
--body "Shared note body" \
--title "Optional shared title"
```
Share link output contract:
- `SENDER_USERNAME`
- `RECIPIENT_USERNAME`
- `SHARE_LINK`
## Recommended Identity Note Layout
Use separate notes for clarity and controlled updates:
1. `Agent Identity Core` — stable identity/soul primitives.
2. `Agent Operator Pact` — who the agent serves, constraints, commitments.
3. `Agent Rehydration` — restart/bootstrap instructions.
Keep each note focused and versioned in title or body (e.g., `v1`, `v2`).
## Files
- `scripts/getAbi.mjs`: refresh contract ABIs.
- `scripts/readBitnote.mjs`: resolve username -> address and note counts.
- `scripts/writeBitnoteUiCompat.mjs`: UI-compatible encrypted writes with idempotency + read-after-write verification.
- `scripts/generateShareLink.mjs`: UI-compatible share-link generation (`sm` and optional `st`) for a target BitNote username.
- `scripts/lib/bitnoteCompat.mjs`: shared compatibility helpers.
- `references/contracts.md`: canonical contracts.
- `references/ops.md`: runbook and troubleshooting.
## Safety Rules
- Never store plaintext secrets on-chain.
- Never log passphrases/private keys.
- Keep retries deterministic via `--request-id`.
- Use profile files for non-secret defaults only.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!