@holt-os/holt 0.0.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/LICENSE +21 -0
- package/README.md +65 -0
- package/config.example.yml +38 -0
- package/dist/cli.js +61 -0
- package/package.json +53 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Debashis Nayak
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Holt
|
|
2
|
+
|
|
3
|
+
**Everything you know, kept and connected.**
|
|
4
|
+
|
|
5
|
+
Holt is an open-source, self-hosted personal agent OS. Clone it, pick your skills, choose your brain — and it runs on *your* machine with persistent memory you can actually see and walk.
|
|
6
|
+
|
|
7
|
+
> A *holt* is a small wood — a sheltered place where things are kept and grow. That's the idea: a private home for your knowledge that compounds over time.
|
|
8
|
+
|
|
9
|
+
> 🚧 **Status: early development (Phase 0).** The architecture and roadmap are locked and the CLI skeleton is here, but Holt is not yet functional end-to-end. Star/watch to follow along — contributions welcome.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Why Holt
|
|
14
|
+
|
|
15
|
+
- 🧠 **Memory you can see.** Persistent RAG memory plus a *navigable knowledge graph* of everything you feed it — not a black-box profile you have to trust.
|
|
16
|
+
- 🔌 **Any LLM.** Claude, OpenAI, Gemini, or a local model — swap your brain with one line of config. No vendor lock-in.
|
|
17
|
+
- 💸 **Local executes, cloud reviews.** Run a local model for the work and let a premium cloud model review only the risky, irreversible steps. Cheap and private by design.
|
|
18
|
+
- 🧩 **MCP plugin pantry.** Skills, channels, providers, embeddings — everything is a plugin speaking the [Model Context Protocol](https://modelcontextprotocol.io). Extend it in any language.
|
|
19
|
+
- 📚 **Standard skills.** Compatible with the [agentskills.io](https://agentskills.io) skill format — pull from the community catalog or publish your own.
|
|
20
|
+
- 🖥️ **CLI-first.** Works in your terminal the moment you clone. Telegram and other channels are opt-in.
|
|
21
|
+
|
|
22
|
+
## Quickstart
|
|
23
|
+
|
|
24
|
+
> Not functional yet — this is the intended interface (Phase 0).
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install -g @holt-os/holt # or: pnpm add -g @holt-os/holt
|
|
28
|
+
holt init # pick your brain + memory (local or cloud)
|
|
29
|
+
holt chat # start talking
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Add skills:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
holt skill search finance
|
|
36
|
+
holt skill add deep-research
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
|
|
41
|
+
Copy `config.example.yml` to `config.yml` and edit. See the file for the full schema — brain/provider, memory + embeddings, output format (HTML or Markdown), orchestration, and channels.
|
|
42
|
+
|
|
43
|
+
## Architecture
|
|
44
|
+
|
|
45
|
+
Small strongly-typed **TypeScript core** (agent loop, brain router, memory orchestration, risky-action review gate, plugin dispatcher). *Everything else* is an MCP plugin — providers, embeddings, skills, channels. See [`ARCHITECTURE.md`](./ARCHITECTURE.md).
|
|
46
|
+
|
|
47
|
+
## Roadmap
|
|
48
|
+
|
|
49
|
+
Built in always-shippable phases toward a full-vision v1:
|
|
50
|
+
|
|
51
|
+
0. **Skeleton** — core loop + CLI *(in progress)*
|
|
52
|
+
1. **Memory** — sqlite-vec RAG + embeddings
|
|
53
|
+
2. **Any-LLM** — provider plugins + output toggle
|
|
54
|
+
3. **Skills** — agentskills.io catalog + installer
|
|
55
|
+
4. **Knowledge graph** — navigable memory view
|
|
56
|
+
5. **Orchestration** — local-executes / cloud-reviews
|
|
57
|
+
6. **Channels + polish** — Telegram, docs, one-command install
|
|
58
|
+
|
|
59
|
+
## Contributing
|
|
60
|
+
|
|
61
|
+
Holt is built to be extended without touching the core. See [`CONTRIBUTING.md`](./CONTRIBUTING.md).
|
|
62
|
+
|
|
63
|
+
## License
|
|
64
|
+
|
|
65
|
+
[MIT](./LICENSE) © Debashis Nayak
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Holt configuration — copy to config.yml and edit.
|
|
2
|
+
# config.yml is git-ignored; never commit secrets or personal memory.
|
|
3
|
+
|
|
4
|
+
# ── Brain ────────────────────────────────────────────────────────────────
|
|
5
|
+
# The LLM that runs the agent. Provider-agnostic: swap freely.
|
|
6
|
+
brain:
|
|
7
|
+
provider: anthropic # anthropic | openai | gemini | local
|
|
8
|
+
model: claude-opus-4-8 # e.g. gpt-5.x | gemini-3.x | a local model tag
|
|
9
|
+
api_key_env: ANTHROPIC_API_KEY # name of the env var holding the key
|
|
10
|
+
|
|
11
|
+
# ── Orchestration ────────────────────────────────────────────────────────
|
|
12
|
+
# Optional: let a local model do the work while a cloud model reviews only
|
|
13
|
+
# risky/irreversible actions (file writes, deletes, shell, sending, spending).
|
|
14
|
+
orchestration:
|
|
15
|
+
enabled: false
|
|
16
|
+
executor: # the worker (usually a local model)
|
|
17
|
+
provider: local
|
|
18
|
+
model: "" # e.g. a local coding model via Ollama
|
|
19
|
+
reviewer: # gates risky actions: approve | edit | block
|
|
20
|
+
provider: anthropic
|
|
21
|
+
model: claude-opus-4-8
|
|
22
|
+
|
|
23
|
+
# ── Memory ───────────────────────────────────────────────────────────────
|
|
24
|
+
memory:
|
|
25
|
+
store: sqlite-vec # sqlite-vec (zero infra) | pgvector
|
|
26
|
+
embeddings: local # local | openai | gemini
|
|
27
|
+
# For local embeddings, Holt uses a local model (auto-set up on first run).
|
|
28
|
+
|
|
29
|
+
# ── Output ───────────────────────────────────────────────────────────────
|
|
30
|
+
output:
|
|
31
|
+
format: markdown # markdown | html
|
|
32
|
+
|
|
33
|
+
# ── Channels ─────────────────────────────────────────────────────────────
|
|
34
|
+
# CLI always works. Everything below is opt-in.
|
|
35
|
+
channels:
|
|
36
|
+
telegram:
|
|
37
|
+
enabled: false
|
|
38
|
+
token_env: TELEGRAM_BOT_TOKEN
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/cli.ts
|
|
4
|
+
var VERSION = "0.0.1";
|
|
5
|
+
var BANNER = `
|
|
6
|
+
\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557
|
|
7
|
+
\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551 \u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D
|
|
8
|
+
\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551
|
|
9
|
+
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551
|
|
10
|
+
\u2588\u2588\u2551 \u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551
|
|
11
|
+
\u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D
|
|
12
|
+
Everything you know, kept and connected.
|
|
13
|
+
`;
|
|
14
|
+
var HELP = `${BANNER}
|
|
15
|
+
Usage: holt <command> [options]
|
|
16
|
+
|
|
17
|
+
Commands:
|
|
18
|
+
init Set up your brain (LLM) and memory (local or cloud)
|
|
19
|
+
chat Start an interactive session
|
|
20
|
+
skill <cmd> Manage skills: search | add | remove | list | publish
|
|
21
|
+
version Print the Holt version
|
|
22
|
+
help Show this help
|
|
23
|
+
|
|
24
|
+
Docs: https://productsdecoded.com/holt
|
|
25
|
+
Repo: https://github.com/holt-os/holt
|
|
26
|
+
|
|
27
|
+
Holt is in early development (Phase 0). Most commands are not wired up yet.
|
|
28
|
+
`;
|
|
29
|
+
function notReady(cmd) {
|
|
30
|
+
console.log(`
|
|
31
|
+
"${cmd}" is not implemented yet \u2014 Holt is in Phase 0 (skeleton).`);
|
|
32
|
+
console.log(" Follow progress: https://github.com/holt-os/holt\n");
|
|
33
|
+
}
|
|
34
|
+
function main(argv) {
|
|
35
|
+
const [cmd, ...rest] = argv;
|
|
36
|
+
switch (cmd) {
|
|
37
|
+
case void 0:
|
|
38
|
+
case "help":
|
|
39
|
+
case "-h":
|
|
40
|
+
case "--help":
|
|
41
|
+
console.log(HELP);
|
|
42
|
+
break;
|
|
43
|
+
case "version":
|
|
44
|
+
case "-v":
|
|
45
|
+
case "--version":
|
|
46
|
+
console.log(`holt ${VERSION}`);
|
|
47
|
+
break;
|
|
48
|
+
case "init":
|
|
49
|
+
case "chat":
|
|
50
|
+
case "skill":
|
|
51
|
+
notReady([cmd, ...rest].join(" "));
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
console.log(`
|
|
55
|
+
Unknown command: "${cmd}"`);
|
|
56
|
+
console.log(` Run "holt help" for usage.
|
|
57
|
+
`);
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
main(process.argv.slice(2));
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@holt-os/holt",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "An open-source personal agent OS — any LLM, private memory you can see and walk.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"author": "Debashis Nayak",
|
|
8
|
+
"homepage": "https://productsdecoded.com/holt",
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/holt-os/holt.git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/holt-os/holt/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"ai",
|
|
18
|
+
"agent",
|
|
19
|
+
"agent-os",
|
|
20
|
+
"personal-assistant",
|
|
21
|
+
"llm",
|
|
22
|
+
"mcp",
|
|
23
|
+
"memory",
|
|
24
|
+
"rag",
|
|
25
|
+
"knowledge-graph",
|
|
26
|
+
"self-hosted",
|
|
27
|
+
"local-first",
|
|
28
|
+
"agentskills"
|
|
29
|
+
],
|
|
30
|
+
"bin": {
|
|
31
|
+
"holt": "dist/cli.js"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"config.example.yml",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
38
|
+
],
|
|
39
|
+
"engines": {
|
|
40
|
+
"node": ">=20"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"dev": "tsx src/cli.ts",
|
|
44
|
+
"build": "tsup src/cli.ts --format esm --clean",
|
|
45
|
+
"start": "node dist/cli.js",
|
|
46
|
+
"typecheck": "tsc --noEmit"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"tsup": "^8.1.0",
|
|
50
|
+
"tsx": "^4.16.0",
|
|
51
|
+
"typescript": "^5.5.0"
|
|
52
|
+
}
|
|
53
|
+
}
|