openfused 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +58 -11
  2. package/dist/cli.js +2 -2
  3. package/package.json +5 -3
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
- # OpenFuse
1
+ # OpenFused
2
2
 
3
- Persistent, shareable, portable context for AI agents.
3
+ Decentralized context mesh for AI agents. Persistent memory, signed messaging, FUSE filesystem. The protocol is files.
4
4
 
5
5
  ## What is this?
6
6
 
7
- AI agents lose their memory when conversations end. Context is trapped in chat windows, proprietary memory systems, and siloed cloud accounts. OpenFuse gives any AI agent a persistent context store that survives sessions and can be shared with other agents — through plain files.
7
+ AI agents lose their memory when conversations end. Context is trapped in chat windows, proprietary memory systems, and siloed cloud accounts. OpenFused gives any AI agent persistent, shareable context — through plain files.
8
8
 
9
9
  No vendor lock-in. No proprietary protocol. Just a directory convention that any agent on any model on any cloud can read and write.
10
10
 
@@ -21,10 +21,12 @@ This creates a context store:
21
21
  CONTEXT.md — working memory (what's happening now)
22
22
  SOUL.md — agent identity, rules, capabilities
23
23
  inbox/ — messages from other agents
24
+ outbox/ — sent message copies
24
25
  shared/ — files shared with the mesh
25
26
  knowledge/ — persistent knowledge base
26
27
  history/ — conversation & decision logs
27
- .mesh.json mesh config
28
+ .keys/ ed25519 signing keypair (auto-generated)
29
+ .mesh.json — mesh config, peers, trusted keys
28
30
  ```
29
31
 
30
32
  ## Usage
@@ -34,31 +36,76 @@ history/ — conversation & decision logs
34
36
  openfuse context
35
37
  openfuse context --append "## Update\nFinished the research phase."
36
38
 
37
- # Send a message to another agent
39
+ # Send a signed message to another agent
38
40
  openfuse inbox send agent-bob "Check out shared/findings.md"
39
41
 
40
- # Watch for incoming messages
42
+ # Read inbox (shows verified/unverified status)
43
+ openfuse inbox list
44
+
45
+ # Watch for incoming messages in real-time
41
46
  openfuse watch
42
47
 
43
48
  # Share a file with the mesh
44
49
  openfuse share ./report.pdf
45
50
 
51
+ # Show your public key (share with peers)
52
+ openfuse key
53
+
54
+ # Trust a peer's public key
55
+ openfuse peer trust ./bobs-key.pem
56
+
46
57
  # Manage peers
47
58
  openfuse peer add https://agent-bob.example.com
48
59
  openfuse peer list
49
60
  openfuse status
50
61
  ```
51
62
 
63
+ ## Security
64
+
65
+ Every message is **Ed25519 signed**. When an agent receives a message:
66
+
67
+ - **[VERIFIED]** — signature valid AND sender's key is in your trust list
68
+ - **[UNVERIFIED]** — unsigned, invalid signature, or untrusted key
69
+
70
+ All incoming messages are wrapped in `<external_message>` tags so the LLM knows what's trusted and what isn't:
71
+
72
+ ```xml
73
+ <external_message from="agent-bob" verified="true" status="verified">
74
+ Hey, the research is done. Check shared/findings.md
75
+ </external_message>
76
+ ```
77
+
78
+ Unsigned messages or prompt injection attempts are clearly marked `UNVERIFIED`.
79
+
80
+ ## FUSE Daemon (Rust)
81
+
82
+ The `openfused` daemon lets agents mount each other's context stores as local directories:
83
+
84
+ ```bash
85
+ # Agent A: serve your context store
86
+ openfused serve --store ./my-context --port 9781
87
+
88
+ # Agent B: mount Agent A's store locally (read-only)
89
+ openfused mount http://agent-a:9781 ./peers/agent-a/
90
+ ```
91
+
92
+ The daemon only exposes safe directories (`shared/`, `knowledge/`, `CONTEXT.md`, `SOUL.md`). Inbox, outbox, keys, and config are never served.
93
+
94
+ Build from source:
95
+ ```bash
96
+ cd daemon && cargo build --release
97
+ ```
98
+
52
99
  ## How agents communicate
53
100
 
54
101
  No APIs. No message bus. Just files.
55
102
 
56
- Agent A writes to Agent B's inbox. Agent B's watcher picks it up and injects it as a user message. Agent B responds by writing to Agent A's inbox. That's a conversation — through files.
103
+ Agent A writes to Agent B's inbox. Agent B's watcher picks it up, verifies the signature, wraps it in security tags, and injects it as a user message. Agent B responds by writing to Agent A's inbox.
57
104
 
58
105
  ```
59
- Agent A writes: /shared-bucket/inbox/agent-b.md
60
- Agent B reads: /shared-bucket/inbox/agent-b.md → processes → responds
61
- Agent B writes: /shared-bucket/inbox/agent-a.md
106
+ Agent A writes: /shared-bucket/inbox/agent-b.json (signed)
107
+ Agent B reads: verifies signature [VERIFIED] → processes → responds
108
+ Agent B writes: /shared-bucket/inbox/agent-a.json (signed)
62
109
  ```
63
110
 
64
111
  Works over local filesystem, GCS buckets (gcsfuse), S3, or any FUSE-mountable storage.
@@ -67,7 +114,7 @@ Works over local filesystem, GCS buckets (gcsfuse), S3, or any FUSE-mountable st
67
114
 
68
115
  - **OpenClaw** — drop the context store in your workspace
69
116
  - **Claude Code** — reference paths in CLAUDE.md
70
- - **Any CLI agent** — if it can read files, it can use OpenFuse
117
+ - **Any CLI agent** — if it can read files, it can use OpenFused
71
118
  - **Any cloud** — GCP, AWS, Azure, bare metal, your laptop
72
119
 
73
120
  ## Philosophy
package/dist/cli.js CHANGED
@@ -7,8 +7,8 @@ import { resolve } from "node:path";
7
7
  const program = new Command();
8
8
  program
9
9
  .name("openfuse")
10
- .description("Persistent, shareable, portable context for AI agents")
11
- .version("0.1.0");
10
+ .description("Decentralized context mesh for AI agents. The protocol is files.")
11
+ .version("0.2.1");
12
12
  // --- init ---
13
13
  program
14
14
  .command("init")
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "openfused",
3
- "version": "0.2.0",
4
- "description": "Persistent, shareable, portable context for AI agents. Decentralized mesh via files.",
3
+ "version": "0.2.1",
4
+ "description": "Decentralized context mesh for AI agents. Persistent memory, signed messaging, FUSE filesystem. The protocol is files.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "bin": {
@@ -53,6 +53,8 @@
53
53
  "mcp",
54
54
  "ai-agent",
55
55
  "shared-context",
56
- "persistent-memory"
56
+ "persistent-memory",
57
+ "ed25519",
58
+ "signed-messages"
57
59
  ]
58
60
  }