getbased-agent-stack 0.2.0__py3-none-any.whl
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.
- getbased_agent_stack/__init__.py +8 -0
- getbased_agent_stack/cli.py +72 -0
- getbased_agent_stack-0.2.0.dist-info/METADATA +116 -0
- getbased_agent_stack-0.2.0.dist-info/RECORD +8 -0
- getbased_agent_stack-0.2.0.dist-info/WHEEL +5 -0
- getbased_agent_stack-0.2.0.dist-info/entry_points.txt +2 -0
- getbased_agent_stack-0.2.0.dist-info/licenses/LICENSE +22 -0
- getbased_agent_stack-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"""getbased-agent-stack — meta-package binding getbased-mcp + getbased-rag.
|
|
2
|
+
|
|
3
|
+
This package contains no tools of its own; it's a convenience installer
|
|
4
|
+
plus a small CLI that proxies to the real binaries. Everything
|
|
5
|
+
interesting lives in the sibling repos.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""Thin CLI wrapper that proxies to getbased-rag's `lens` and getbased-mcp's
|
|
2
|
+
runner. Kept minimal so users can still call `lens` / `getbased-mcp`
|
|
3
|
+
directly — this exists only for discoverability ("what commands do I have
|
|
4
|
+
after `pipx install getbased-agent-stack`?")."""
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
HELP = """\
|
|
11
|
+
getbased-stack — thin wrapper over the two binaries installed by this package.
|
|
12
|
+
|
|
13
|
+
Real commands (use directly, they're also on your PATH):
|
|
14
|
+
lens — getbased-rag CLI (serve, ingest, stats, ...)
|
|
15
|
+
getbased-mcp — getbased-mcp stdio server (spawned by agents)
|
|
16
|
+
|
|
17
|
+
This wrapper only exists for discoverability:
|
|
18
|
+
getbased-stack serve → lens serve
|
|
19
|
+
getbased-stack info → lens info
|
|
20
|
+
getbased-stack version → print the installed package versions
|
|
21
|
+
|
|
22
|
+
Quick start:
|
|
23
|
+
1. `getbased-stack serve &` start the RAG server
|
|
24
|
+
2. `lens ingest /path/to/papers` index your docs
|
|
25
|
+
3. configure your MCP agent (Claude Code, Hermes) — see the README
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def main() -> int:
|
|
30
|
+
import getbased_agent_stack
|
|
31
|
+
|
|
32
|
+
argv = sys.argv[1:]
|
|
33
|
+
if not argv or argv[0] in ("-h", "--help", "help"):
|
|
34
|
+
print(HELP)
|
|
35
|
+
return 0
|
|
36
|
+
|
|
37
|
+
cmd, rest = argv[0], argv[1:]
|
|
38
|
+
if cmd == "version":
|
|
39
|
+
try:
|
|
40
|
+
import getbased_mcp # noqa: F401
|
|
41
|
+
import lens # noqa: F401
|
|
42
|
+
import importlib.metadata as md
|
|
43
|
+
print(f"getbased-agent-stack {getbased_agent_stack.__version__}")
|
|
44
|
+
try:
|
|
45
|
+
print(f" getbased-mcp {md.version('getbased-mcp')}")
|
|
46
|
+
except md.PackageNotFoundError:
|
|
47
|
+
print(" getbased-mcp (not installed)")
|
|
48
|
+
try:
|
|
49
|
+
print(f" getbased-rag {md.version('getbased-rag')}")
|
|
50
|
+
except md.PackageNotFoundError:
|
|
51
|
+
print(" getbased-rag (not installed)")
|
|
52
|
+
return 0
|
|
53
|
+
except ImportError as e:
|
|
54
|
+
print(f"Missing dependency: {e}", file=sys.stderr)
|
|
55
|
+
return 1
|
|
56
|
+
|
|
57
|
+
# Delegate to the lens CLI for everything else.
|
|
58
|
+
try:
|
|
59
|
+
from lens.cli import app as lens_app
|
|
60
|
+
|
|
61
|
+
sys.argv = ["lens"] + argv
|
|
62
|
+
lens_app()
|
|
63
|
+
return 0
|
|
64
|
+
except SystemExit as e:
|
|
65
|
+
return int(e.code or 0)
|
|
66
|
+
except ImportError:
|
|
67
|
+
print("getbased-rag not installed — install with `pipx install getbased-agent-stack[full]`", file=sys.stderr)
|
|
68
|
+
return 1
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
if __name__ == "__main__":
|
|
72
|
+
sys.exit(main())
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: getbased-agent-stack
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: One-command install of the full getbased agent stack — getbased-mcp + getbased-rag + getbased-dashboard
|
|
5
|
+
License-Expression: GPL-3.0-only
|
|
6
|
+
Requires-Python: >=3.10
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Requires-Dist: getbased-mcp>=0.2.2
|
|
10
|
+
Requires-Dist: getbased-rag>=0.6.1
|
|
11
|
+
Requires-Dist: getbased-dashboard>=0.5.0
|
|
12
|
+
Provides-Extra: full
|
|
13
|
+
Requires-Dist: getbased-rag[full]>=0.6.1; extra == "full"
|
|
14
|
+
Provides-Extra: test
|
|
15
|
+
Requires-Dist: pytest>=8.0; extra == "test"
|
|
16
|
+
Requires-Dist: httpx>=0.27; extra == "test"
|
|
17
|
+
Requires-Dist: pytest-timeout>=2.3; extra == "test"
|
|
18
|
+
Dynamic: license-file
|
|
19
|
+
|
|
20
|
+
# getbased-agent-stack
|
|
21
|
+
|
|
22
|
+
Meta-package bundling the full [getbased](https://getbased.health) agent stack into one install: the MCP adapter, the RAG engine, the browser dashboard, a thin discovery CLI, a hardened systemd unit, and example configs for Claude Code + Hermes.
|
|
23
|
+
|
|
24
|
+
Part of the [getbased-agents monorepo](https://github.com/elkimek/getbased-agents).
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pipx install "getbased-agent-stack[full]"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Pulls:
|
|
33
|
+
|
|
34
|
+
- [`getbased-mcp`](https://github.com/elkimek/getbased-agents/tree/main/packages/mcp) — stdio MCP server that Claude Code / Hermes / OpenClaw spawn
|
|
35
|
+
- [`getbased-rag`](https://github.com/elkimek/getbased-agents/tree/main/packages/rag) — local RAG knowledge server (FastAPI + Qdrant + MiniLM/BGE)
|
|
36
|
+
- [`getbased-dashboard`](https://github.com/elkimek/getbased-agents/tree/main/packages/dashboard) — web UI for library management, MCP config generation, and agent-activity inspection
|
|
37
|
+
- The `getbased-stack` discovery CLI
|
|
38
|
+
- `[full]` extra: PDF/DOCX parsers + ONNX runtime for hardware-accelerated embeddings
|
|
39
|
+
|
|
40
|
+
Total install: ~500 MB (the ML deps dominate). Smaller installs available — `pipx install getbased-mcp` (10 MB, agent only), `pipx install "getbased-rag[full]"` (RAG only), `pipx install getbased-dashboard` (UI + MCP; pulls rag if you want the Knowledge tab working).
|
|
41
|
+
|
|
42
|
+
## Quickstart
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 1. Start the RAG server — local Qdrant DB + MiniLM embedder
|
|
46
|
+
lens serve # blocks; serves on 127.0.0.1:8322
|
|
47
|
+
lens key # prints the bearer token
|
|
48
|
+
|
|
49
|
+
# 2. Start the dashboard in another terminal
|
|
50
|
+
getbased-dashboard serve # serves on 127.0.0.1:8323
|
|
51
|
+
|
|
52
|
+
# 3. Open http://127.0.0.1:8323 in your browser, paste the lens key
|
|
53
|
+
# Create libraries, drag-drop files to ingest (live chunks/sec pill),
|
|
54
|
+
# run the MCP Test button to verify your agent path
|
|
55
|
+
|
|
56
|
+
# 4. Wire the MCP into your AI client
|
|
57
|
+
# The dashboard's MCP tab generates paste-ready config blocks for
|
|
58
|
+
# Claude Desktop, Claude Code, Cursor, Cline, and Hermes.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Both the RAG server and the getbased PWA talk to the same `lens` instance — point the PWA at `http://127.0.0.1:8322` under **Settings → AI → Knowledge Base → External server** and the same corpus feeds the browser chat, the dashboard, and any MCP-connected agent.
|
|
62
|
+
|
|
63
|
+
## Running as a systemd service
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
cp systemd/getbased-rag.service ~/.config/systemd/user/
|
|
67
|
+
systemctl --user daemon-reload
|
|
68
|
+
systemctl --user enable --now getbased-rag
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
The unit is hardened (`ProtectSystem=strict`, `NoNewPrivileges`, `RestrictAddressFamilies`, etc.); run `systemd-analyze security getbased-rag` to see the score.
|
|
72
|
+
|
|
73
|
+
## Architecture
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Claude Code / Hermes / OpenClaw Browser
|
|
77
|
+
│ MCP (stdio) │ HTTP
|
|
78
|
+
▼ ▼
|
|
79
|
+
getbased-mcp getbased-dashboard (localhost:8323)
|
|
80
|
+
│ │ │ │
|
|
81
|
+
│ HTTP │ HTTP │ proxies │ spawns stdio for Test
|
|
82
|
+
▼ ▼ ▼ ▼
|
|
83
|
+
sync GW getbased-rag ◀──────────────┘ getbased-mcp
|
|
84
|
+
(localhost:8322)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The MCP holds no persistent state; it's a thin translator between MCP tool calls and two HTTP backends:
|
|
88
|
+
|
|
89
|
+
- `sync.getbased.health/api/context` — read-only lab summary pushed by your PWA session (via Agent Access token)
|
|
90
|
+
- `localhost:8322` (getbased-rag) — your local research library
|
|
91
|
+
|
|
92
|
+
The dashboard is likewise stateless — it proxies rag for Knowledge operations, imports `getbased_mcp` to introspect env/config, and spawns the MCP binary on demand to verify it works.
|
|
93
|
+
|
|
94
|
+
## Version compatibility
|
|
95
|
+
|
|
96
|
+
| Stack | mcp | rag | dashboard | Protocol |
|
|
97
|
+
|---|---|---|---|---|
|
|
98
|
+
| 0.1.x | ≥0.2.0 | ≥0.1.0 | — | v1 (multi-library) |
|
|
99
|
+
| 0.2.x | ≥0.2.2 | ≥0.6.0 | ≥0.5.0 | v1 (+ streaming ingest, per-library models) |
|
|
100
|
+
|
|
101
|
+
Bump the meta's major when sibling protocols break; bump siblings freely for normal features.
|
|
102
|
+
|
|
103
|
+
## Development
|
|
104
|
+
|
|
105
|
+
This package is the meta — the interesting code lives in sibling packages. See the [monorepo root README](https://github.com/elkimek/getbased-agents#development) for workspace setup.
|
|
106
|
+
|
|
107
|
+
The integration test (`tests/test_integration.py`) spins up `lens serve` in a subprocess, ingests a fixture, and exercises every MCP tool round-trip. Catches drift between the siblings the way the v1.21 catch-up drift would have been caught if the test existed then. The dashboard has its own test suite (`cd packages/dashboard && uv run pytest`) covering the proxy, modal logic, stdio probe, and activity-log handling.
|
|
108
|
+
|
|
109
|
+
## Related docs
|
|
110
|
+
|
|
111
|
+
- [packages/stack/CONTRIBUTING.md](CONTRIBUTING.md) — when to bump the meta vs a sibling
|
|
112
|
+
- [packages/stack/SECURITY.md](SECURITY.md) — threat model, scope, sibling pointers
|
|
113
|
+
|
|
114
|
+
## Licence
|
|
115
|
+
|
|
116
|
+
GPL-3.0-only, matching the siblings.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
getbased_agent_stack/__init__.py,sha256=LSo9NAptb9YiMiamzJLzIZTali0QS0bT8JU_975ddv4,281
|
|
2
|
+
getbased_agent_stack/cli.py,sha256=IASj51V3gl0v9eebjuDwXfjZplqCBYlMWGCQwdGlNn4,2445
|
|
3
|
+
getbased_agent_stack-0.2.0.dist-info/licenses/LICENSE,sha256=K-IjLWkez1gJQMrlqA5zgyw8vh19mDzk4hKM9Dslmts,1024
|
|
4
|
+
getbased_agent_stack-0.2.0.dist-info/METADATA,sha256=4JFkTXngtk0Yhymmb6ZlUkzhQYzUzTFfVBxq9zhHBbo,5572
|
|
5
|
+
getbased_agent_stack-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
6
|
+
getbased_agent_stack-0.2.0.dist-info/entry_points.txt,sha256=oIyVEEt9t6HuGncV_3y_6d0fjkY2PDOVQ2OEpyq2Q04,65
|
|
7
|
+
getbased_agent_stack-0.2.0.dist-info/top_level.txt,sha256=NH7AGQBXKHxl7hzWSYDXOaIXCg_9GV3hIQbj8YR8XZQ,21
|
|
8
|
+
getbased_agent_stack-0.2.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
GNU GENERAL PUBLIC LICENSE
|
|
2
|
+
Version 3, 29 June 2007
|
|
3
|
+
|
|
4
|
+
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
5
|
+
Everyone is permitted to copy and distribute verbatim copies
|
|
6
|
+
of this license document, but changing it is not allowed.
|
|
7
|
+
|
|
8
|
+
Preamble
|
|
9
|
+
|
|
10
|
+
The GNU General Public License is a free, copyleft license for
|
|
11
|
+
software and other kinds of works.
|
|
12
|
+
|
|
13
|
+
The licenses for most software and other practical works are designed
|
|
14
|
+
to take away your freedom to share and change the works. By contrast,
|
|
15
|
+
the GNU General Public License is intended to guarantee your freedom to
|
|
16
|
+
share and change all versions of a program--to make sure it remains free
|
|
17
|
+
software for all its users. We, the Free Software Foundation, use the
|
|
18
|
+
GNU General Public License for most of our software; it applies also to
|
|
19
|
+
any other work released this way by its authors. You can apply it to
|
|
20
|
+
your programs, too.
|
|
21
|
+
|
|
22
|
+
For the full license text, see <https://www.gnu.org/licenses/gpl-3.0.txt>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
getbased_agent_stack
|