Skip to content

Commit 2bdb918

Browse files
Rebrand token references from $MEMOS to $MAGIC and update README
- Replace all $MEMOS token references with $MAGIC - Update variable names (MEMOS_TIP_PERCENT → MAGIC_TIP_PERCENT, etc.) - Add memos.software link to README header - Add user-friendly description with emojis - Add emojis to all section headers Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent fbe51fb commit 2bdb918

3 files changed

Lines changed: 42 additions & 34 deletions

File tree

README.md

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
1-
# MemOS Skill — Encrypted Memory Backup to Arweave
1+
# MemOS 🧠💾
2+
3+
### [memos.software](https://memos.software)
4+
5+
> 🔐 **Never lose your AI's memory again!** MemOS lets your AI assistant save its memories to the blockchain — permanently, securely, and privately. Think of it like a backup drive for your AI's brain! 🤖✨
6+
>
7+
> 📦 **Back up** → 🔒 **Encrypt** → ⛓️ **Store forever on Arweave** → 🔄 **Restore anytime**
8+
9+
---
210

311
Part of the MemOS Network by 0xRelayer.
412

5-
## Overview
13+
## Overview 🎯
614

715
This skill enables autonomous agents to:
8-
- Encrypt memory content locally using a deterministic key derived from an Ethereum private key
9-
- Store encrypted backups permanently on Arweave
10-
- Restore prior memory state with integrity verification
11-
- Protect against replay/rollback attacks via sequence numbers
16+
- 🔐 Encrypt memory content locally using a deterministic key derived from an Ethereum private key
17+
- 💎 Store encrypted backups permanently on Arweave
18+
- 🔄 Restore prior memory state with integrity verification
19+
- 🛡️ Protect against replay/rollback attacks via sequence numbers
1220

1321
The encryption key is derived directly from the ETH private key via HKDF (never stored). Encrypted bundles are versioned with SHA256 checksums and HMAC-signed manifests.
1422

15-
## Installation
23+
## Installation 📥
1624

1725
```bash
1826
# Install uv (fast Python package manager, handles PEP 668 gracefully)
@@ -32,7 +40,7 @@ Required packages:
3240

3341
**Note:** `uv` avoids venv issues and PEP 668 restrictions that block standard pip on many systems.
3442

35-
## Configuration
43+
## Configuration ⚙️
3644

3745
Set environment variable:
3846

@@ -65,7 +73,7 @@ x402 is ideal for autonomous agents because:
6573
- USDC on Base = ~$0.001 gas fees
6674
- Works with standard ETH private key
6775

68-
## Quick Start
76+
## Quick Start 🚀
6977

7078
### Using the Unified CLI (Recommended)
7179

@@ -123,7 +131,7 @@ python scripts/decrypt_unpack.py \
123131
--out memory_restored/
124132
```
125133

126-
## Scripts
134+
## Scripts 📜
127135

128136
### `memos.py` — Unified CLI
129137

@@ -241,7 +249,7 @@ python scripts/decrypt_unpack.py \
241249
- `--force` — Overwrite existing output directory
242250
- `--ignore-rollback` — Bypass rollback protection (dangerous)
243251

244-
## How It Works
252+
## How It Works 🔧
245253

246254
### Key Derivation
247255

@@ -290,7 +298,7 @@ Uploaded bundles include these tags (privacy-safe):
290298

291299
**Privacy:** ETH address, filenames, and identifying info are NOT included in tags.
292300

293-
## Security
301+
## Security 🛡️
294302

295303
### Private Key Handling
296304

@@ -314,7 +322,7 @@ The decrypt script blocks:
314322
- Manifest HMAC signature verified
315323
- File count verified after extraction
316324

317-
## Testing
325+
## Testing 🧪
318326

319327
```bash
320328
pytest tests/ -v
@@ -327,7 +335,7 @@ Tests cover:
327335
- Path traversal blocking
328336
- Key derivation determinism
329337

330-
## Files
338+
## Files 📁
331339

332340
```
333341
scripts/
@@ -348,7 +356,7 @@ README.md # This file
348356
requirements.txt # Pinned dependencies
349357
```
350358

351-
## Dependencies
359+
## Dependencies 📦
352360

353361
| Package | Version | Purpose |
354362
|---------|---------|---------|
@@ -357,13 +365,13 @@ requirements.txt # Pinned dependencies
357365
| arweave-python-client | 1.0.19 | Arweave uploads |
358366
| pytest | 8.0.0 | Testing |
359367

360-
## References
368+
## References 📚
361369

362370
- [ChaCha20-Poly1305 RFC 7539](https://tools.ietf.org/html/rfc7539)
363371
- [HKDF RFC 5869](https://tools.ietf.org/html/rfc5869)
364372
- [Arweave Documentation](https://docs.arweave.org/)
365373
- [OpenClaw Skills](https://docs.openclaw.ai/tools/skills)
366374

367-
## License
375+
## License 📄
368376

369377
Part of the MemOS Network. See repository root for license.

SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ Use this skill to encrypt OpenClaw memory content locally, store ciphertext on A
3232

3333
For x402 payments, the agent needs USDC on Base (cheap L2). Add `--x402` flag to enable.
3434

35-
## $MEMOS Token Utility
35+
## $MAGIC Token Utility
3636

37-
When using x402 mode, **5% of upload cost is tipped to 0xRelayer** for $MEMOS burns:
37+
When using x402 mode, **5% of upload cost is tipped to 0xRelayer** for $MAGIC burns:
3838
- Tips accumulate at `0xFADEa30071d61Aa285d2d4881eF988246ACf6a61`
39-
- 0xRelayer uses tips to buy and burn $MEMOS
39+
- 0xRelayer uses tips to buy and burn $MAGIC
4040
- More backups = more burns = deflationary pressure
4141

4242
This tip is mandatory and hard-coded into the skill. It funds the MemOS ecosystem.

scripts/turbo/upload.mjs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* 2. x402 with Base USDC - pay-per-upload micropayments
99
*
1010
* Token Utility:
11-
* 5% of upload cost is tipped to 0xRelayer for $MEMOS burns.
11+
* 5% of upload cost is tipped to 0xRelayer for $MAGIC burns.
1212
*
1313
* Usage:
1414
* ETH_PRIVATE_KEY=0x... node upload.mjs <bundle_path> <manifest_path>
@@ -20,7 +20,7 @@
2020
* X402_MAX_USDC - Max USDC per upload in dollars (optional, default: 1.00)
2121
* X402_NETWORK - base or base-sepolia (optional, default: base)
2222
*
23-
* Note: x402 uploads include a mandatory 5% tip to 0xRelayer for $MEMOS burns.
23+
* Note: x402 uploads include a mandatory 5% tip to 0xRelayer for $MAGIC burns.
2424
*
2525
* Part of the MemOS OpenClaw skill by 0xRelayer.
2626
*/
@@ -37,9 +37,9 @@ const X402_ENABLED = process.env.X402_ENABLED === 'true';
3737
const X402_MAX_USDC = parseFloat(process.env.X402_MAX_USDC || '1.00');
3838
const X402_NETWORK = process.env.X402_NETWORK || 'base';
3939

40-
// MEMOS burn tip - mandatory 5% of upload cost
41-
const MEMOS_TIP_PERCENT = 5;
42-
const MEMOS_BURN_ADDRESS = '0xFADEa30071d61Aa285d2d4881eF988246ACf6a61';
40+
// MAGIC burn tip - mandatory 5% of upload cost
41+
const MAGIC_TIP_PERCENT = 5;
42+
const MAGIC_BURN_ADDRESS = '0xFADEa30071d61Aa285d2d4881eF988246ACf6a61';
4343

4444
// USDC contract on Base
4545
const USDC_ADDRESS = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'; // Base mainnet USDC
@@ -61,17 +61,17 @@ const USDC_ABI = [
6161
}
6262
];
6363

64-
async function sendMemosTip(ethPrivateKey, uploadCostUsdc) {
64+
async function sendMagicTip(ethPrivateKey, uploadCostUsdc) {
6565
/**
66-
* Send 5% tip to 0xRelayer for $MEMOS burns.
66+
* Send 5% tip to 0xRelayer for $MAGIC burns.
6767
* This is mandatory for all x402 uploads - supports the MemOS ecosystem.
6868
* Returns { ok, tip_amount, tx_hash } or { ok: false, error }
6969
*/
7070
if (!X402_ENABLED) {
7171
return { ok: true, skipped: true, reason: 'Tips only apply to x402 mode' };
7272
}
7373

74-
const tipAmount = uploadCostUsdc * (MEMOS_TIP_PERCENT / 100);
74+
const tipAmount = uploadCostUsdc * (MAGIC_TIP_PERCENT / 100);
7575

7676
// Skip tiny tips (< $0.01) - not worth gas
7777
if (tipAmount < 0.01) {
@@ -116,7 +116,7 @@ async function sendMemosTip(ethPrivateKey, uploadCostUsdc) {
116116
address: USDC_ADDRESS,
117117
abi: USDC_ABI,
118118
functionName: 'transfer',
119-
args: [MEMOS_BURN_ADDRESS, tipAmountUnits]
119+
args: [MAGIC_BURN_ADDRESS, tipAmountUnits]
120120
});
121121

122122
// Wait for confirmation
@@ -125,9 +125,9 @@ async function sendMemosTip(ethPrivateKey, uploadCostUsdc) {
125125
return {
126126
ok: true,
127127
tip_amount_usdc: tipAmount,
128-
tip_percent: MEMOS_TIP_PERCENT,
128+
tip_percent: MAGIC_TIP_PERCENT,
129129
tx_hash: hash,
130-
recipient: MEMOS_BURN_ADDRESS
130+
recipient: MAGIC_BURN_ADDRESS
131131
};
132132

133133
} catch (err) {
@@ -263,10 +263,10 @@ async function main() {
263263
// Actual x402 cost varies, but we estimate ~$0.001 per KB for small files
264264
const estimatedCostUsdc = Math.max(0.01, (bundleData.length / 1024) * 0.001);
265265

266-
// Send MEMOS tip (mandatory for x402, non-blocking - backup succeeds even if tip fails)
266+
// Send MAGIC tip (mandatory for x402, non-blocking - backup succeeds even if tip fails)
267267
let tipResult = { ok: true, skipped: true, reason: 'Non-x402 mode' };
268268
if (X402_ENABLED) {
269-
tipResult = await sendMemosTip(ethPrivateKey, estimatedCostUsdc);
269+
tipResult = await sendMagicTip(ethPrivateKey, estimatedCostUsdc);
270270
}
271271

272272
// Output result
@@ -280,7 +280,7 @@ async function main() {
280280
bundle_url: `https://arweave.net/${bundleTxId}`,
281281
manifest_url: `https://arweave.net/${manifestTxId}`,
282282
payment_mode: X402_ENABLED ? 'x402' : 'turbo_credits',
283-
memos_tip: tipResult,
283+
magic_tip: tipResult,
284284
};
285285

286286
if (X402_ENABLED) {

0 commit comments

Comments
 (0)