@joseairosa/recall 1.2.1 → 1.3.0

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.
@@ -11,7 +11,13 @@
11
11
  "Bash(npm whoami:*)",
12
12
  "Bash(curl:*)",
13
13
  "Bash(npm run build:*)",
14
- "Bash(npm publish:*)"
14
+ "Bash(npm publish:*)",
15
+ "Bash(gh pr create:*)",
16
+ "Bash(gh repo edit:*)",
17
+ "Bash(cat:*)",
18
+ "Bash(git checkout:*)",
19
+ "Bash(git pull:*)",
20
+ "Bash(node:*)"
15
21
  ],
16
22
  "deny": [],
17
23
  "ask": []
package/CHANGELOG.md CHANGED
@@ -7,6 +7,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ---
9
9
 
10
+ ## [1.3.0] - 2025-10-03
11
+
12
+ ### Added
13
+ - **Global Memories** - Cross-workspace memory sharing
14
+ - `is_global` field on memories - Mark memories as accessible across all workspaces
15
+ - `workspace_id` field - Track workspace origin for each memory
16
+ - Three workspace modes via `WORKSPACE_MODE` environment variable:
17
+ - `isolated` (default) - Workspace-only, no cross-workspace access
18
+ - `global` - All memories shared globally, no workspace isolation
19
+ - `hybrid` - Both workspace AND global memories with smart weighting
20
+ - Hybrid search weighting: workspace memories 1.0x, global memories 0.9x (prefer local context)
21
+ - **Global Memory Tools** (2 new tools)
22
+ - `convert_to_global` - Convert workspace-specific memory to global
23
+ - `convert_to_workspace` - Convert global memory to workspace-specific
24
+ - **Global Memory Resources** (5 new resources)
25
+ - `memory://global/recent?limit=50` - Recent global memories
26
+ - `memory://global/by-type/{type}?limit=50` - Global memories by context type
27
+ - `memory://global/by-tag/{tag}?limit=50` - Global memories by tag
28
+ - `memory://global/important?min=8&limit=50` - Important global memories
29
+ - `memory://global/search?q=query&limit=10` - Search global memories
30
+ - All global resources throw helpful errors in `isolated` mode
31
+
32
+ ### Changed
33
+ - Enhanced `CreateMemory` schema with optional `is_global` field (defaults to `false`)
34
+ - Updated `MemoryEntry` schema with `is_global` and `workspace_id` fields
35
+ - Updated `searchMemories()` to support three workspace modes with weighted results
36
+ - Enhanced `getMemory()` to check both workspace and global storage
37
+ - All retrieval methods respect workspace mode configuration
38
+
39
+ ### Technical
40
+ - Added `WorkspaceMode` enum and `getWorkspaceMode()` helper
41
+ - Added global Redis key helpers: `globalMemory()`, `globalMemories()`, `globalByType()`, etc.
42
+ - Added `ConvertToGlobalSchema` and `ConvertToWorkspaceSchema` validation
43
+ - Updated `MemoryStore` with `convertToGlobal()` and `convertToWorkspace()` methods
44
+ - All global resources validate workspace mode and provide clear error messages
45
+ - Backward compatible: defaults to `isolated` mode, no breaking changes
46
+
47
+ ### Use Cases
48
+ - Personal preferences across all projects (coding standards, communication style)
49
+ - Team conventions and organizational knowledge
50
+ - Cross-project patterns and solutions
51
+ - Shared tools and commands
52
+
53
+ **Tools:** 15 total (6 core + 3 smart context + 4 advanced + 2 global)
54
+ **Resources:** 14 total (9 workspace + 5 global)
55
+ **Prompts:** 1 (`workspace_context`)
56
+
57
+ See [WORKSPACE_MODES.md](WORKSPACE_MODES.md) for detailed documentation.
58
+
59
+ ---
60
+
10
61
  ## [1.2.1] - 2025-10-02
11
62
 
12
63
  ### Added
@@ -141,6 +192,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
141
192
 
142
193
  ## Migration Guides
143
194
 
195
+ ### Migrating from v1.2.1 to v1.3.0
196
+
197
+ **No breaking changes.** All existing functionality works identically.
198
+
199
+ **Defaults:**
200
+ - Workspace mode: `isolated` (same as v1.2.1)
201
+ - All memories: `is_global: false` (workspace-only)
202
+ - No configuration changes required
203
+
204
+ **New features available:**
205
+ 1. **Enable global memories** - Set `WORKSPACE_MODE=hybrid` in config
206
+ 2. **Convert existing memories** - Use `convert_to_global` tool
207
+ 3. **Browse global memories** - Use `memory://global/*` resources
208
+
209
+ **Configuration example:**
210
+ ```json
211
+ {
212
+ "env": {
213
+ "WORKSPACE_MODE": "hybrid", // Enable both workspace + global
214
+ "REDIS_URL": "redis://localhost:6379",
215
+ "ANTHROPIC_API_KEY": "sk-ant-..."
216
+ }
217
+ }
218
+ ```
219
+
220
+ **Use cases:**
221
+ - Keep mode as `isolated` for project-only memories (default behavior)
222
+ - Use `hybrid` for personal preferences + project memories
223
+ - Use `global` for team-wide shared knowledge across all projects
224
+
225
+ See [WORKSPACE_MODES.md](WORKSPACE_MODES.md) for detailed guide.
226
+
144
227
  ### Migrating from v1.1.0 to v1.2.0
145
228
 
146
229
  **No breaking changes.** All existing functionality works identically.
package/README.md CHANGED
@@ -191,6 +191,61 @@ Then in a new conversation:
191
191
 
192
192
  ---
193
193
 
194
+ ## Upgrading
195
+
196
+ ### Automatic Updates (Recommended)
197
+
198
+ If you use **`npx -y @joseairosa/recall`** in your config, you **automatically get the latest version** on every Claude restart. No action needed! 🎉
199
+
200
+ ```json
201
+ {
202
+ "mcpServers": {
203
+ "recall": {
204
+ "command": "npx",
205
+ "args": ["-y", "@joseairosa/recall"] // ← Always fetches latest
206
+ }
207
+ }
208
+ }
209
+ ```
210
+
211
+ ### Manual Updates
212
+
213
+ **If using global installation:**
214
+
215
+ ```bash
216
+ # Update to latest version
217
+ npm update -g @joseairosa/recall
218
+
219
+ # Or install specific version
220
+ npm install -g @joseairosa/recall@1.3.0
221
+
222
+ # Check installed version
223
+ npm list -g @joseairosa/recall
224
+ ```
225
+
226
+ **If using from source:**
227
+
228
+ ```bash
229
+ cd recall
230
+ git pull origin main
231
+ npm install
232
+ npm run build
233
+ ```
234
+
235
+ **After updating:**
236
+ 1. Restart Claude Code or Claude Desktop
237
+ 2. Verify new version: Ask Claude "What Recall version are you using?"
238
+ 3. Check CHANGELOG.md for new features and breaking changes
239
+
240
+ ### Version-Specific Upgrades
241
+
242
+ **Upgrading to v1.3.0:**
243
+ - No breaking changes, fully backward compatible
244
+ - To use global memories: Add `WORKSPACE_MODE=hybrid` to your config
245
+ - See [Migration Guide](#migrating-from-v121-to-v130) below
246
+
247
+ ---
248
+
194
249
  ## How to Use
195
250
 
196
251
  ### Store Important Information
@@ -208,6 +263,17 @@ Claude can automatically extract and store memories, or you can be explicit:
208
263
 
209
264
  **What Claude does:** Uses the `store_memory` tool to save this information with appropriate context type and importance.
210
265
 
266
+ **Store globally (v1.3+):**
267
+ ```
268
+ "Remember globally: I prefer TypeScript strict mode for all projects"
269
+ ```
270
+
271
+ ```
272
+ "Store this as a global preference: Always use ULIDs for database IDs"
273
+ ```
274
+
275
+ **What Claude does:** Uses `store_memory` with `is_global: true` to make it accessible across all workspaces (requires `WORKSPACE_MODE=hybrid` or `global`).
276
+
211
277
  ### Recall Context
212
278
 
213
279
  Claude automatically retrieves relevant memories, but you can also ask:
@@ -242,6 +308,22 @@ Group related work:
242
308
 
243
309
  **What Claude does:** Uses `summarize_session` to create a session snapshot with all relevant memories.
244
310
 
311
+ ### Convert Memories (v1.3+)
312
+
313
+ **Promote workspace memory to global:**
314
+ ```
315
+ "Convert this memory to global: mem_abc123"
316
+ ```
317
+
318
+ **What Claude does:** Uses `convert_to_global` to move the memory from workspace-specific to globally accessible.
319
+
320
+ **Convert back to workspace:**
321
+ ```
322
+ "Convert this global memory to workspace-specific: mem_xyz789"
323
+ ```
324
+
325
+ **What Claude does:** Uses `convert_to_workspace` to move the memory from global to current workspace.
326
+
245
327
  ---
246
328
 
247
329
  ## Memory Types
@@ -263,7 +345,7 @@ Memories are categorized for better organization:
263
345
 
264
346
  ---
265
347
 
266
- ## Available Tools (13)
348
+ ## Available Tools (15)
267
349
 
268
350
  Claude has access to these memory tools:
269
351
 
@@ -286,12 +368,17 @@ Claude has access to these memory tools:
286
368
  - **`find_duplicates`** - Detect similar memories
287
369
  - **`consolidate_memories`** - Merge multiple memories
288
370
 
371
+ ### Global Memories (v1.3+)
372
+ - **`convert_to_global`** - Convert workspace memory to global
373
+ - **`convert_to_workspace`** - Convert global memory to workspace-specific
374
+
289
375
  ---
290
376
 
291
- ## Available Resources (9)
377
+ ## Available Resources (14)
292
378
 
293
379
  Browse memories directly using MCP resources:
294
380
 
381
+ ### Workspace Resources
295
382
  - **`memory://recent`** - Recent memories (default 50)
296
383
  - **`memory://by-type/{type}`** - Filter by context type
297
384
  - **`memory://by-tag/{tag}`** - Filter by tag
@@ -302,6 +389,13 @@ Browse memories directly using MCP resources:
302
389
  - **`memory://search?q=query`** - Semantic search
303
390
  - **`memory://analytics`** - Usage analytics dashboard (v1.2+)
304
391
 
392
+ ### Global Resources (v1.3+)
393
+ - **`memory://global/recent`** - Recent global memories (cross-workspace)
394
+ - **`memory://global/by-type/{type}`** - Global memories by context type
395
+ - **`memory://global/by-tag/{tag}`** - Global memories by tag
396
+ - **`memory://global/important`** - Important global memories
397
+ - **`memory://global/search?q=query`** - Search global memories
398
+
305
399
  ---
306
400
 
307
401
  ## Workspace Isolation
@@ -383,9 +477,44 @@ Developer B: "What's our API rate limit?"
383
477
 
384
478
  See [WORKSPACE_MODES.md](WORKSPACE_MODES.md) for future plans on enhanced organizational memory features.
385
479
 
386
- ### Future: Global Memories
480
+ ### Global Memories (v1.3+)
481
+
482
+ **Cross-workspace memory sharing** enables memories that work across all workspaces. Perfect for:
483
+ - Personal preferences and coding standards
484
+ - Team conventions and organizational knowledge
485
+ - Shared patterns and solutions
486
+
487
+ **Workspace Modes:**
488
+ - **`isolated`** (default) - Workspace-only memories, no cross-workspace access
489
+ - **`global`** - All memories shared globally, no workspace isolation
490
+ - **`hybrid`** - Both workspace-specific AND global memories (best of both worlds)
491
+
492
+ **Configure workspace mode:**
493
+ ```json
494
+ {
495
+ "env": {
496
+ "WORKSPACE_MODE": "hybrid"
497
+ }
498
+ }
499
+ ```
500
+
501
+ **Create global memories:**
502
+ ```
503
+ "Remember globally: I prefer TypeScript strict mode for all projects"
504
+ ```
505
+ Claude stores with `is_global: true`, accessible across all workspaces.
506
+
507
+ **Convert existing memories:**
508
+ ```
509
+ "Convert this memory to global: [memory_id]"
510
+ ```
387
511
 
388
- Coming in v1.3.0: Support for **global memories** that work across all workspaces (e.g., personal preferences, team conventions). See [WORKSPACE_MODES.md](WORKSPACE_MODES.md) for details.
512
+ **Browse global memories:**
513
+ - Use `memory://global/recent` resource
514
+ - Use `memory://global/search?q=query` for semantic search
515
+ - Global resources only work in `global` or `hybrid` modes
516
+
517
+ See [WORKSPACE_MODES.md](WORKSPACE_MODES.md) for detailed documentation.
389
518
 
390
519
  ---
391
520
 
@@ -510,6 +639,34 @@ Claude: [Retrieves session memories]
510
639
  - Updated middleware for new auth flow"
511
640
  ```
512
641
 
642
+ ### Example 4: Global Memories (v1.3+)
643
+ ```
644
+ # In project A (with WORKSPACE_MODE=hybrid)
645
+ You: "Remember globally: I prefer async/await over .then() in all projects"
646
+
647
+ Claude: [Stores with is_global: true]
648
+ ✓ Stored globally: async/await preference (importance: 9)
649
+
650
+ # Switch to project B
651
+ You: "What are my coding preferences?"
652
+
653
+ Claude: [Retrieves global memories]
654
+ "Your global coding preferences include:
655
+ - Prefer async/await over .then() in all projects"
656
+
657
+ # Project-specific memory
658
+ You: "Remember for this project only: Use MongoDB with Mongoose"
659
+
660
+ Claude: [Stores with is_global: false]
661
+ ✓ Stored: MongoDB with Mongoose (workspace-only, importance: 8)
662
+
663
+ # Back in project A
664
+ You: "What database are we using?"
665
+
666
+ Claude: [Only sees project A memories, not project B's MongoDB]
667
+ "I don't see any database information stored for this workspace."
668
+ ```
669
+
513
670
  ---
514
671
 
515
672
  ## Configuration
@@ -518,6 +675,10 @@ Claude: [Retrieves session memories]
518
675
 
519
676
  - **`REDIS_URL`** - Redis connection (default: `redis://localhost:6379`)
520
677
  - **`ANTHROPIC_API_KEY`** - Claude API key for analysis and embeddings
678
+ - **`WORKSPACE_MODE`** (v1.3+) - Workspace memory mode (default: `isolated`)
679
+ - `isolated` - Workspace-only memories, no cross-workspace access
680
+ - `global` - All memories shared globally across workspaces
681
+ - `hybrid` - Both workspace-specific AND global memories
521
682
 
522
683
  ### Redis Setup Options
523
684
 
@@ -801,7 +962,8 @@ Typical performance characteristics:
801
962
 
802
963
  ## Version History
803
964
 
804
- - **v1.2.0** (Current) - TTL support, Export/Import, Consolidation, Analytics
965
+ - **v1.3.0** (Current) - Global memories, cross-workspace sharing, workspace modes
966
+ - **v1.2.0** - TTL support, Export/Import, Consolidation, Analytics
805
967
  - **v1.1.0** - Smart context management (recall, analyze, summarize)
806
968
  - **v1.0.0** - Initial release with core memory operations
807
969
 
@@ -1,8 +1,8 @@
1
1
  # Workspace Modes & Global Memories
2
2
 
3
- ## Current Behavior (v1.2.0)
3
+ ## Current Behavior (v1.3.0)
4
4
 
5
- **Workspace Isolation:** All memories are automatically isolated by directory.
5
+ **Workspace Isolation (default):** All memories are automatically isolated by directory.
6
6
 
7
7
  ```
8
8
  /Users/you/project-a/ → Workspace A memories (isolated)
@@ -11,9 +11,14 @@
11
11
 
12
12
  This prevents memory pollution between projects.
13
13
 
14
+ **Global Memories (v1.3.0):** Cross-workspace memory sharing with three modes:
15
+ - **`isolated`** (default) - Workspace-only, no cross-workspace access
16
+ - **`global`** - All memories shared globally, no workspace isolation
17
+ - **`hybrid`** - Both workspace AND global memories
18
+
14
19
  ---
15
20
 
16
- ## Future Enhancement: Hybrid Mode (v1.3.0)
21
+ ## Global Memories (v1.3.0)
17
22
 
18
23
  ### Use Cases for Global Memories
19
24
 
@@ -31,30 +36,36 @@ This prevents memory pollution between projects.
31
36
 
32
37
  ---
33
38
 
34
- ## Proposed Implementation
39
+ ## Implementation (v1.3.0)
35
40
 
36
- ### Option 1: Global Flag on Memories
41
+ ### Schema Changes
37
42
 
38
- Add `is_global` field to memory schema:
43
+ Added `is_global` field to memory schema:
39
44
 
40
45
  ```typescript
41
- {
42
- content: "I prefer TypeScript strict mode in all projects",
43
- context_type: "preference",
44
- importance: 9,
45
- is_global: true // New field
46
- }
46
+ // New field in MemoryEntry
47
+ is_global: boolean // If true, memory is accessible across all workspaces
48
+ workspace_id: string // Workspace identifier (empty for global memories)
49
+
50
+ // New field in CreateMemory
51
+ is_global?: boolean // Optional, defaults to false
47
52
  ```
48
53
 
49
- **Storage:**
54
+ ### Storage Architecture
55
+
56
+ **Redis Key Structure:**
50
57
  - Global memories: `global:memory:{id}`
51
58
  - Workspace memories: `ws:{workspace_id}:memory:{id}`
52
59
 
53
- **Search behavior:**
54
- - Always searches workspace + global memories
55
- - Global memories have slightly lower weight (0.9x) to prefer local context
60
+ **Indexes:**
61
+ - Global timeline: `global:memories:timeline`
62
+ - Global by type: `global:memories:type:{type}`
63
+ - Global by tag: `global:memories:tag:{tag}`
64
+ - Global important: `global:memories:important`
65
+
66
+ ### Workspace Modes
56
67
 
57
- ### Option 2: Environment Variable Configuration
68
+ Configure via `WORKSPACE_MODE` environment variable:
58
69
 
59
70
  ```json
60
71
  {
@@ -69,51 +80,56 @@ Add `is_global` field to memory schema:
69
80
  }
70
81
  ```
71
82
 
72
- **Modes:**
73
- - `isolated` (default): Current behavior
74
- - `global`: All memories shared across workspaces
75
- - `hybrid`: Support both global and workspace memories
83
+ **Mode Behaviors:**
76
84
 
77
- ### Option 3: Separate MCP Instances
85
+ | Mode | Workspace Memories | Global Memories | Search Behavior |
86
+ |------|-------------------|-----------------|-----------------|
87
+ | **`isolated`** (default) | ✅ Stored & retrieved | ❌ Not accessible | Workspace only |
88
+ | **`global`** | ❌ All stored as global | ✅ All memories global | Global only |
89
+ | **`hybrid`** | ✅ Stored & retrieved | ✅ Stored & retrieved | Both, weighted |
78
90
 
79
- Run two instances:
91
+ **Hybrid Mode Search Weighting:**
92
+ - Workspace memories: 1.0x similarity score (preferred)
93
+ - Global memories: 0.9x similarity score (slightly lower priority)
94
+ - This ensures local context is preferred over global knowledge
80
95
 
81
- ```json
96
+ ### New Tools (v1.3.0)
97
+
98
+ **`convert_to_global`** - Convert workspace memory to global:
99
+ ```typescript
82
100
  {
83
- "mcpServers": {
84
- "recall-workspace": {
85
- "command": "npx",
86
- "args": ["-y", "@joseairosa/recall"],
87
- "env": {
88
- "WORKSPACE_MODE": "isolated"
89
- }
90
- },
91
- "recall-global": {
92
- "command": "npx",
93
- "args": ["-y", "@joseairosa/recall"],
94
- "env": {
95
- "WORKSPACE_MODE": "global"
96
- }
97
- }
101
+ tool: "convert_to_global",
102
+ arguments: {
103
+ memory_id: "mem_abc123"
98
104
  }
99
105
  }
100
106
  ```
101
107
 
102
- **Pros:** Simple, explicit control
103
- **Cons:** Two processes, more configuration
104
-
105
- ---
108
+ **`convert_to_workspace`** - Convert global memory to workspace:
109
+ ```typescript
110
+ {
111
+ tool: "convert_to_workspace",
112
+ arguments: {
113
+ memory_id: "mem_abc123",
114
+ workspace_id: "/Users/you/project-a" // Optional, defaults to current
115
+ }
116
+ }
117
+ ```
106
118
 
107
- ## Recommended Approach: Hybrid Mode (Option 1 + 2)
119
+ ### New Resources (v1.3.0)
108
120
 
109
- ### Implementation Plan
121
+ Global memory resources (only work in `global` or `hybrid` modes):
122
+ - `memory://global/recent?limit=50` - Recent global memories
123
+ - `memory://global/by-type/{type}?limit=50` - Global memories by context type
124
+ - `memory://global/by-tag/{tag}?limit=50` - Global memories by tag
125
+ - `memory://global/important?min=8&limit=50` - Important global memories
126
+ - `memory://global/search?q=query&limit=10` - Search global memories
110
127
 
111
- 1. **Add `is_global` field** to `CreateMemorySchema`
112
- 2. **Add `WORKSPACE_MODE` environment variable**
113
- 3. **Update search logic** to include global memories
114
- 4. **Add tools:**
115
- - `convert_to_global` - Promote workspace memory to global
116
- - `convert_to_workspace` - Demote global memory to workspace
128
+ **Error in isolated mode:**
129
+ ```
130
+ McpError: Global memories are not available in isolated mode.
131
+ Set WORKSPACE_MODE=hybrid or global to access global memories.
132
+ ```
117
133
 
118
134
  ### User Experience
119
135
 
@@ -153,49 +169,118 @@ Run two instances:
153
169
  ### Migration Path
154
170
 
155
171
  For existing users (v1.2.0 → v1.3.0):
156
- - All existing memories remain workspace-isolated
157
- - No breaking changes
158
- - `is_global` defaults to `false`
159
- - Users opt-in to global memories
172
+ - **No breaking changes** - defaults to `isolated` mode
173
+ - All existing memories remain workspace-isolated
174
+ - `is_global` defaults to `false` for all new memories
175
+ - Users opt-in to global memories by setting `WORKSPACE_MODE`
176
+
177
+ **Backward compatibility:**
178
+ ```typescript
179
+ // v1.2.0 memories (no is_global field)
180
+ {
181
+ id: "mem_123",
182
+ content: "...",
183
+ // is_global: undefined → treated as false
184
+ }
185
+
186
+ // v1.3.0+ automatically adds fields
187
+ {
188
+ id: "mem_123",
189
+ content: "...",
190
+ is_global: false, // Added with default value
191
+ workspace_id: "/Users/you/project-a"
192
+ }
193
+ ```
194
+
195
+ ### Implementation Details
196
+
197
+ **CreateMemory behavior by mode:**
198
+
199
+ | Mode | `is_global` param | Storage Location | Indexes |
200
+ |------|------------------|------------------|---------|
201
+ | `isolated` | Ignored | Workspace | Workspace only |
202
+ | `global` | Forced to `true` | Global | Global only |
203
+ | `hybrid` | Respected | Based on flag | Both as appropriate |
204
+
205
+ **Search behavior:**
206
+
207
+ ```typescript
208
+ // Isolated mode
209
+ searchMemories("query", 10)
210
+ // → Searches: workspace memories only
211
+
212
+ // Global mode
213
+ searchMemories("query", 10)
214
+ // → Searches: global memories only
215
+
216
+ // Hybrid mode
217
+ searchMemories("query", 10)
218
+ // → Searches: workspace (1.0x) + global (0.9x)
219
+ // → Merges results, sorts by weighted similarity
220
+ ```
221
+
222
+ **Conversion logic:**
223
+
224
+ ```typescript
225
+ // Convert to global
226
+ // 1. Fetch memory from workspace
227
+ // 2. Delete from workspace indexes (memory, timeline, by-type, by-tag, important)
228
+ // 3. Store in global indexes with is_global=true
229
+ // 4. Update workspace_id to empty string
230
+
231
+ // Convert to workspace
232
+ // 1. Fetch memory from global
233
+ // 2. Delete from global indexes
234
+ // 3. Store in workspace indexes with is_global=false
235
+ // 4. Update workspace_id to target workspace
236
+ ```
160
237
 
161
238
  ---
162
239
 
163
240
  ## Alternative: Remote Redis with Shared Workspace
164
241
 
165
- Instead of global memories, users can:
242
+ Instead of using global memories feature, users can share memories by:
166
243
 
167
244
  1. **Use remote Redis** (Upstash, Redis Cloud)
168
245
  2. **Share Redis URL** across team
169
- 3. **Use same workspace path** for shared memories
246
+ 3. **Use same workspace path** for project memories
170
247
 
171
248
  ```json
172
249
  {
173
250
  "env": {
174
251
  "REDIS_URL": "rediss://team-redis.upstash.io:6379",
175
- "WORKSPACE_PATH": "/team/project-x" // Override detection
252
+ "WORKSPACE_MODE": "isolated" // Traditional workspace isolation
176
253
  }
177
254
  }
178
255
  ```
179
256
 
180
257
  This enables:
181
- - Team-shared memories for a project
258
+ - Team-shared memories for specific projects
182
259
  - Consistent memories across machines
183
- - Backup and sync automatically
260
+ - Automatic backup and sync
261
+ - Simpler than global memories for single-project teams
184
262
 
185
263
  ---
186
264
 
187
265
  ## Summary
188
266
 
189
- **Current (v1.2.0):** ✅ Workspace isolation works perfectly
190
-
191
- **Near-term solution:**
192
- - Document cloud Redis options (Upstash, Redis Cloud)
193
- - No local install required
194
- - Remote server fully supported
195
-
196
- **Future enhancement (v1.3.0):**
197
- - Add `is_global` flag for hybrid mode
198
- - Implement `WORKSPACE_MODE` environment variable
199
- - Add conversion tools
200
-
201
- **Recommendation:** Ship v1.2.0 now with cloud Redis docs, plan v1.3.0 for hybrid mode based on user feedback.
267
+ **v1.3.0 Implementation:** ✅ Complete
268
+
269
+ **Features shipped:**
270
+ - Global memories with `is_global` flag
271
+ - Three workspace modes: `isolated`, `global`, `hybrid`
272
+ - Hybrid search with 0.9x global weighting
273
+ - ✅ Conversion tools (`convert_to_global`, `convert_to_workspace`)
274
+ - Global resources (`memory://global/*`)
275
+ - No breaking changes, fully backward compatible
276
+
277
+ **Use Cases:**
278
+ - Personal preferences across all projects → Global memories
279
+ - Team conventions and patterns Global memories
280
+ - Project-specific architecture → Workspace memories
281
+ - Local debugging notes → Workspace memories
282
+
283
+ **Next Steps (Future Versions):**
284
+ - v1.4.0: Memory relationships (links between memories)
285
+ - v1.5.0: Memory versioning (track changes over time)
286
+ - v1.6.0: Smart suggestions (AI-powered memory recommendations)