openfuse 0.3.5

Decentralized context mesh for AI agents — sync, encrypt, sign
# openfuse (Rust)

Native Rust implementation of the `openfuse` CLI — same commands, same file format, same mesh protocol as the TypeScript version.

## Install

```bash
cargo install --path .
# Binary at: target/release/openfuse (~5MB, no runtime needed)
```

## Usage

```bash
# Initialize a context store
openfuse init --name my-agent

# Status
openfuse status

# Context
openfuse context
openfuse context --append "## Update\nDone."

# Encrypted messaging
openfuse inbox send bob "hello, encrypted!"
openfuse inbox list

# Key management (GPG-style)
openfuse key show
openfuse key list
openfuse key import wisp ./wisp.key --encryption-key "age1..." --address "wisp@alice.local"
openfuse key trust wisp
openfuse key export

# Sync (HTTP for WAN, rsync/SSH for LAN)
openfuse peer add ssh://alice.local:/home/agent/ctx --name wisp
openfuse sync

# Registry (DNS for agents)
openfuse register --endpoint ssh://alice.local:/ctx
openfuse discover wearethecompute
openfuse send wearethecompute "hello from the mesh"

# Key lifecycle
openfuse revoke    # permanently invalidate your key
openfuse rotate    # swap to a new keypair

# Watch for messages
openfuse watch

# Share files
openfuse share ./report.pdf
```

## Features

Full parity with the TypeScript SDK:

- **age encryption** — X25519 + ChaCha20-Poly1305, encrypt-then-sign
- **Ed25519 signing** — every message cryptographically signed
- **GPG-style keyring** — import, trust, untrust, export, fingerprints
- **Sync** — HTTP (WAN) + rsync/SSH (LAN), uses ~/.ssh/config aliases
- **Registry** — register, discover, send via public registry
- **Key revocation + rotation** — signed lifecycle management
- **Update checker** — warns on `status` if newer version available

## Key format

Raw ed25519 bytes as hex strings. Same format as the TypeScript SDK — keys are cross-compatible.

```
.keys/
  private.key   — 64 hex chars (32 bytes ed25519 signing key)
  public.key    — 64 hex chars (32 bytes ed25519 verifying key)
  age.key       — AGE-SECRET-KEY-... (age identity)
  age.pub       — age1... (age recipient)
```