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.
- package/README.md +58 -11
- package/dist/cli.js +2 -2
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# OpenFused
|
|
2
2
|
|
|
3
|
-
Persistent,
|
|
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.
|
|
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
|
-
.
|
|
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
|
-
#
|
|
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.
|
|
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.
|
|
60
|
-
Agent B reads:
|
|
61
|
-
Agent B writes: /shared-bucket/inbox/agent-a.
|
|
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
|
|
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("
|
|
11
|
-
.version("0.1
|
|
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.
|
|
4
|
-
"description": "
|
|
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
|
}
|