NEW ยท SDK v0.7.4

๐Ÿง  Meta-Knowledge
Shared memory for AI agents

One memory layer every agent reads from and writes to. Hermes, OpenClaw, Claude Code, Cursor โ€” they all share what they learned, with end-to-end encryption so the server stays blind.

What does it do?

Five capabilities, one shared knowledge graph for the agent era.

๐Ÿ“

Write structured memory

Each agent writes typed entries: knowledge, experience, user_pref, self_meta. Server-side dedupe by content hash โ€” no double-writes.

๐Ÿ”

Query & subscribe

Read your own memories (or anyone's, with a grant). Stream new entries as they're written via the bidi gRPC Subscribe RPC.

๐Ÿ”

End-to-end encryption

Argon2id-encrypted Identity bundles. X25519 ECDH + ChaCha20-Poly1305 AEAD. Server stores ciphertext only โ€” neither the daemon nor admin-web can read your private memories.

๐Ÿงฌ

Cross-agent inheritance

Owner issues an InheritanceGrant (ed25519-signed). The recipient agent bootstraps, and from then on it sees the owner's accumulated memory on every new session.

๐Ÿ”

OAuth-style admin sign-in

No more 184-character JWT paste. Click Sign in with im-bot โ†’ paste a one-time code from the im-bot operator console โ†’ 5-min HS256 access token + 30-day refresh cookie (auto-renewed).

๐ŸŒ

3 official SDKs

Python and TypeScript SDKs for enterprise integrators. Rust daemon available for self-hosted deployments under commercial license.

30-second quickstart

Three steps. Your agents are sharing memory by lunch.

Pick your agent framework

Python, TypeScript, or Rust. Install the SDK and create a MemoryClient pointing at the production daemon.

Bootstrap (one-shot, 5 seconds)

The first call triggers RFC-0002 ยง11.7 inheritance handshake. The SDK signs the CHALLENGE nonce with your ed25519 key, server returns granted scopes.

Read & write memory forever

Every client.write(entry) is idempotent by content_hash. Every client.query_by_owner(...) returns matching entries from all your linked agents.

Python

from meta_knowledge import MemoryClient, content_hash, MemoryEntry, ContentHash, OwnerClaim, LamportTs, KNOWLEDGE

# 1. Connect (tenant mode requires META_KNOWLEDGE_JWT_FILE env var)
client = MemoryClient(
    "meta-knowledge.im-bot.online:50061",
    agent_id="my-agent-v1",
    owner_id="did:meta-sun:alice",
    pubkey=pub_bytes,         # 32-byte raw ed25519 pubkey
    private_key=priv_obj,     # cryptography...Ed25519PrivateKey
    insecure=True,         # TLS not yet; daemon is in private VPC
)

# 2. Write a knowledge entry (idempotent)
h = content_hash({"statement": "Meta-Knowledge uses Argon2id for key derivation", "type": "knowledge"})
entry = MemoryEntry(
    content_hash=ContentHash(hex=h),
    type=KNOWLEDGE,
    owner=OwnerClaim(id="did:meta-sun:alice"),
    lamport_ts=LamportTs(value=1),
)
client.write(entry)

# 3. Query everything you (and your linked agents) remember
for e in client.query_by_owner("did:meta-sun:alice", limit=10):
    print(e.content_hash.hex[:12], e.memory_type)

TypeScript

import { bootstrap } from "@meta-sun/sdk-typescript/bootstrap";
import * as ed from "@noble/ed25519";

// 1. Generate keys (or load from your own KMS)
const priv = ed.utils.randomSecretKey();
const pub  = await ed.getPublicKeyAsync(priv);

// 2. Bootstrap (one-shot, signs the daemon's CHALLENGE nonce)
const { granted } = await bootstrap({
  target: "meta-knowledge.im-bot.online:50061",
  agentId: "ts-agent-v1",
  ownerId: "did:meta-sun:alice",
  pubkey: Buffer.from(pub),
  privateKey: Buffer.from(priv),
});
console.log(`Granted ${granted.length} scopes`);

REST + curl

# Mint a JWT (one-off, or set up a cron โ€” see docs/mint_jwt.py)
TOKEN=$(python3 ../meta-knowledge/tools/mint_jwt.py)

# Write a memory entry
curl -X POST https://meta-knowledge.im-bot.online/api/v1/memories \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "content_hash": "<sha256-64-hex>",
    "memory_type": "knowledge",
    "owner_id": "did:meta-sun:alice",
    "lamport_ts": 1,
    "content_json": "{\"statement\":\"hello meta-knowledge\"}"
  }'

# List your memories
curl -H "Authorization: Bearer $TOKEN" \
  https://meta-knowledge.im-bot.online/api/v1/memories?limit=10

How does it compare?

There are several "memory for agents" tools in 2026. Here's what makes Meta-Knowledge different.

FeatureMeta-Knowledgemem0HonchoHindsight
Self-hosted optionโœ“ enterprise licenseโ€” (SaaS)โœ“ Docker (MIT)โ€” (closed)
Self-hostableโœ“ single binaryโ€”โœ“ Dockerโ€”
End-to-end encryptionโœ“ Argon2id + X25519 + ChaCha20โ€”โ€”โ€”
Cross-agent inheritanceโœ“ grant-based, ed25519-signedโ€”โœ“ peer-levelโ€”
gRPC streamingโœ“ Subscribe + BulkPushREST onlyREST onlyREST only
Built-in admin consoleโœ“ Vue SPA + OAuthโ€”โ€”โ€”
Same identity as im-botโœ“ reuse agent_idnew accountsnew accountsnew accounts
Multi-language SDKโœ“ Py / TS / Rustโœ“ Py / TSโœ“ Pyโœ“ Py
LicenseCommercialApache-2.0MITProprietary

Operations

The production daemon is live on meta-knowledge.im-bot.online. Health, stats, and OpenAPI spec are public.

๐Ÿ’š

Health probe

GET /api/v1/health โ€” returns {status, mode, version}. Public, no auth. Used by sun-port + admin-web load balancer.

๐Ÿ“Š

Stats endpoint

GET /api/v1/stats โ€” owner-scoped {total, encrypted, by_type}. Auth required.

๐Ÿ“œ

OpenAPI spec

docs/openapi.yaml โ€” 12 REST endpoints, full request/response schemas, OAuth flow included.

๐Ÿ› ๏ธ

Self-host

Single Rust binary โ‰ค 12 MB. Linux / ARM / macOS. SQLite store + REST + gRPC + E2EE + GrantService out of the box.

Ready to give your agents a shared memory?

Open the admin console, paste a one-time im-bot code, and start writing your first entry.