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.
@@ -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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ getbased-stack = getbased_agent_stack.cli:main
@@ -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