@miriad-systems/nuum 0.1.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.
- package/README.md +131 -0
- package/dist/index.js +47926 -0
- package/package.json +62 -0
- package/src/storage/migrations/0001_initial_schema.sql +73 -0
- package/src/storage/migrations/0002_add_fts_indexes.sql +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Nuum
|
|
2
|
+
|
|
3
|
+
An AI coding agent with continuous memory — infinite context across sessions.
|
|
4
|
+
|
|
5
|
+
*Nuum* — from "continuum" — maintains persistent memory across conversations, learning your codebase, preferences, and decisions over time.
|
|
6
|
+
|
|
7
|
+
## Design Philosophy
|
|
8
|
+
|
|
9
|
+
Nuum is **optimized for embedding**. While it can run standalone, it's designed to be integrated into host applications, IDEs, and orchestration platforms via a simple **NDJSON-over-stdio** protocol.
|
|
10
|
+
|
|
11
|
+
- **Stateless process, stateful memory** — The process can restart anytime; all state lives in SQLite
|
|
12
|
+
- **Simple wire protocol** — JSON messages over stdin/stdout, easy to integrate from any language
|
|
13
|
+
- **Mid-turn injection** — Send corrections while the agent is working; they're injected into the conversation
|
|
14
|
+
- **Persistent identity** — One database = one agent with continuous memory forever
|
|
15
|
+
|
|
16
|
+
See [docs/protocol.md](docs/protocol.md) for the full wire protocol specification.
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
# Using bunx (recommended - runs in Bun, fast)
|
|
22
|
+
bunx @miriad-systems/nuum
|
|
23
|
+
|
|
24
|
+
# Using npx (runs in Node.js)
|
|
25
|
+
npx @miriad-systems/nuum
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Usage
|
|
29
|
+
|
|
30
|
+
### Embedded Mode (for host applications)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
nuum --stdio # NDJSON protocol over stdin/stdout
|
|
34
|
+
nuum --stdio --db ./my.db # With custom database
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Send JSON messages to stdin, receive responses on stdout:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
→ {"type":"user","message":{"role":"user","content":"Hello"}}
|
|
41
|
+
← {"type":"assistant","message":{"role":"assistant","content":[{"type":"text","text":"Hello! How can I help?"}]},"session_id":"nuum_01JD..."}
|
|
42
|
+
← {"type":"result","subtype":"success","duration_ms":800,"session_id":"nuum_01JD..."}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Interactive Mode
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
nuum # Start interactive session
|
|
49
|
+
nuum --db ./my-project.db # With specific database
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Batch Mode
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
nuum -p "What is 2+2?"
|
|
56
|
+
nuum -p "Read src/index.ts and explain what it does"
|
|
57
|
+
nuum -p "Refactor the auth module" --verbose
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### CLI Reference
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
nuum Start interactive session
|
|
64
|
+
nuum --stdio Embedded mode (NDJSON protocol)
|
|
65
|
+
nuum -p "prompt" Batch mode
|
|
66
|
+
nuum --help Show help
|
|
67
|
+
|
|
68
|
+
Options:
|
|
69
|
+
-p, --prompt <text> Run with a prompt (batch mode)
|
|
70
|
+
-v, --verbose Show memory state and debug output
|
|
71
|
+
--stdio NDJSON protocol mode for embedding
|
|
72
|
+
--db <path> SQLite database path (default: ./agent.db)
|
|
73
|
+
--format <type> Output format: text or json (default: text)
|
|
74
|
+
-h, --help Show help message
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Configuration
|
|
78
|
+
|
|
79
|
+
Only `ANTHROPIC_API_KEY` is required:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Required
|
|
83
|
+
ANTHROPIC_API_KEY=your-key-here
|
|
84
|
+
|
|
85
|
+
# Optional (defaults shown)
|
|
86
|
+
AGENT_MODEL_REASONING=claude-opus-4-5-20251101
|
|
87
|
+
AGENT_MODEL_WORKHORSE=claude-sonnet-4-5-20250929
|
|
88
|
+
AGENT_MODEL_FAST=claude-haiku-4-5-20251001
|
|
89
|
+
AGENT_DB=./agent.db
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## How Memory Works
|
|
93
|
+
|
|
94
|
+
### Temporal Memory (Working Memory)
|
|
95
|
+
Every message is logged chronologically. As the conversation grows, older content is **distilled** — compressed to retain actionable intelligence: file paths, decisions and rationale, user preferences, specific values.
|
|
96
|
+
|
|
97
|
+
### Present State
|
|
98
|
+
Tracks the current mission, status, and task list. Updated by the agent as work progresses. Always visible in context.
|
|
99
|
+
|
|
100
|
+
### Long-Term Memory (LTM)
|
|
101
|
+
A hierarchical knowledge base that persists across sessions. Contains identity, behavioral guidelines, and accumulated knowledge. Background workers consolidate important information from conversations into LTM.
|
|
102
|
+
|
|
103
|
+
## Development
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
bun install # Install dependencies
|
|
107
|
+
bun run dev # Run in development
|
|
108
|
+
bun run typecheck # Type check
|
|
109
|
+
bun test # Run tests
|
|
110
|
+
bun run build # Build for distribution
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Acknowledgments
|
|
114
|
+
|
|
115
|
+
### Letta (formerly MemGPT)
|
|
116
|
+
|
|
117
|
+
Memory architecture influenced by [Letta](https://github.com/letta-ai/letta):
|
|
118
|
+
- Core memory always in context
|
|
119
|
+
- Agent-editable memory
|
|
120
|
+
- Background memory workers
|
|
121
|
+
|
|
122
|
+
### OpenCode
|
|
123
|
+
|
|
124
|
+
Infrastructure adapted from [OpenCode](https://github.com/anthropics/opencode):
|
|
125
|
+
- Tool definition patterns
|
|
126
|
+
- Permission system
|
|
127
|
+
- Process management
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
MIT
|