You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+6-16Lines changed: 6 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,15 +8,15 @@
8
8
9
9
bubseek turns fragmented data across operational systems, repositories, and agent runtime traces into **explainable, actionable, and shareable insights** without heavy ETL. It keeps the Bub runtime and extension model while packaging a practical default distribution for real deployments.
10
10
11
-
`bubseek`now boots through a single distribution entry point and targets SeekDB/OceanBase tape storage through the SQLAlchemy URL or `OCEANBASE_*` settings.
11
+
`bubseek`packages a practical Bub distribution with SeekDB/OceanBase defaults, bundled channels, and builtin skills, without adding a second CLI surface on top of `bub`.
12
12
13
13
## Features
14
14
15
15
-**Lightweight and on-demand** — Trigger analysis when needed instead of maintaining large offline pipelines.
16
16
-**Explainability first** — Conclusions are returned together with agent reasoning context.
17
17
-**Cloud-edge ready** — Supports distributed deployment and local execution boundaries.
-**Bub-compatible** — Forwards Bub commands directly; no fork of the core runtime.
19
+
-**Bub-compatible** — Uses Bub directly as the runtime and command surface; no fork of the core runtime.
20
20
21
21
## Quick start
22
22
@@ -26,23 +26,15 @@ Requires [uv](https://docs.astral.sh/uv/) (recommended) or pip, and Python 3.12+
26
26
git clone https://github.com/ob-labs/bubseek.git
27
27
cd bubseek
28
28
uv sync
29
-
uv run bubseek --help
30
-
uv run bubseek chat
29
+
uv run bub --help
30
+
uv run bub chat
31
31
```
32
32
33
-
If your runtime reads credentials from `.env`, bubseek forwards them to the Bub subprocess:
34
-
35
-
```dotenv
36
-
BUB_MODEL=openrouter:qwen/qwen3-coder-next
37
-
BUB_API_KEY=sk-or-v1-...
38
-
BUB_API_BASE=https://openrouter.ai/api/v1
39
-
```
40
-
41
-
Configure SeekDB or OceanBase before running `bubseek`, using `BUB_TAPESTORE_SQLALCHEMY_URL=mysql+oceanbase://...` or the matching `OCEANBASE_*` variables.
33
+
Configure SeekDB or OceanBase before running `bubseek`, using `BUB_TAPESTORE_SQLALCHEMY_URL=mysql+oceanbase://...`.
42
34
43
35
## Add contrib
44
36
45
-
Contrib packages remain standard Python packages. Add them as normal dependencies. The bundled channel extras resolve from GitHub-hosted `bub-contrib` packages instead of local workspace packages.
37
+
Contrib packages remain standard Python packages. Add them as normal dependencies. bubseek ships its built-in channels and marimo support by default, and resolves bundled contrib packages from GitHub-hosted `bub-contrib` packages instead of local workspace packages.
Copy file name to clipboardExpand all lines: contrib/bubseek-marimo/README.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,15 +12,15 @@ Marimo channel for Bub — native marimo dashboard with chat and insights index.
12
12
## Installation
13
13
14
14
```bash
15
-
uv sync --extra marimo
15
+
uv sync
16
16
# or
17
-
pip install bubseek[marimo]
17
+
pip install .
18
18
```
19
19
20
20
## Gateway
21
21
22
22
```bash
23
-
bubseek gateway --enable-channel marimo
23
+
bub gateway --enable-channel marimo
24
24
```
25
25
26
26
Open `http://localhost:2718/` — marimo gallery. Click **dashboard** for chat + index. The dashboard queues turns asynchronously and refreshes transcript events from the channel backend.
Copy file name to clipboardExpand all lines: contrib/bubseek-schedule/README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ dependencies = [
37
37
-**`load_state` starts the scheduler** on the first inbound message. That way `bub chat` (CLI-only: only the `cli` channel is enabled) still persists jobs to SeekDB. Previously, `AsyncIOScheduler` was only started by the `schedule` channel, so CLI chat left jobs in memory-only `_pending_jobs` and **nothing was written to `apscheduler_jobs`**.
38
38
- The channel name is `schedule`. Enabling it in `bub gateway` is optional for persistence; it still starts/stops the scheduler cleanly when you use gateway with that channel.
39
39
- Jobs are persisted to:
40
-
-**OceanBase/SeekDB**: Same URL as the tape store (`BUB_TAPESTORE_SQLALCHEMY_URL` / `OCEANBASE_*`), table `apscheduler_jobs`.
40
+
-**OceanBase/SeekDB**: Same URL as the tape store (`BUB_TAPESTORE_SQLALCHEMY_URL`), table `apscheduler_jobs`.
41
41
42
42
## Provided Tools
43
43
@@ -47,7 +47,7 @@ dependencies = [
47
47
48
48
## Debug: job in chat but not in Marimo kanban / DB
49
49
50
-
The gateway resolves the job store URL from `BUB_TAPESTORE_SQLALCHEMY_URL`or workspace `.env`(`OCEANBASE_*`). Marimo must use the **same** URL. If `insights/schedule_kanban.py` pointed at the default `127.0.0.1:2881/bub` while your `.env` uses another host/db, the table will look empty.
50
+
The gateway resolves the job store URL from `BUB_TAPESTORE_SQLALCHEMY_URL`in the workspace `.env`or process environment. Marimo must use the **same** URL.
Install with the normal project sync or package install:`uv sync` / `pip install .`.
45
48
46
49
## Runtime credentials
47
50
48
-
bubseek forwards `.env` values to the Bub subprocess. Bub reads `BUB_*` variables (see [Bub deployment](https://github.com/bubbuild/bub/blob/main/docs/deployment.md)).
51
+
Bub reads `BUB_*` variables directly (see [Bub deployment](https://github.com/bubbuild/bub/blob/main/docs/deployment.md)).
|`BUB_SEARCH_OLLAMA_API_KEY`| Required for web.search tool (bundled) |
70
73
|`BUB_SEARCH_OLLAMA_API_BASE`| Ollama API base (default: `https://ollama.com/api`) |
71
-
|`BUB_FEISHU_APP_ID`| Required for Feishu channel (optional extra: `bubseek[feishu]`) |
74
+
|`BUB_FEISHU_APP_ID`| Required for Feishu channel |
72
75
|`BUB_FEISHU_APP_SECRET`| Required for Feishu channel |
73
-
|`BUB_DINGTALK_CLIENT_ID`| AppKey for DingTalk channel (optional extra: `bubseek[dingtalk]`) |
76
+
|`BUB_DINGTALK_CLIENT_ID`| AppKey for DingTalk channel |
74
77
|`BUB_DINGTALK_CLIENT_SECRET`| AppSecret for DingTalk channel |
75
78
|`BUB_DINGTALK_ALLOW_USERS`| Comma-separated staff_ids, or `*` for all |
76
-
| WeChat token file | After `bub login wechat`, credentials live under `~/.bub/wechat_token.json` (optional extra: `bubseek[wechat]`); see [bub-wechat](https://github.com/bubbuild/bub-contrib/tree/main/packages/bub-wechat)|
77
-
|`BUB_DISCORD_TOKEN`| Discord bot token (optional extra: `bubseek[discord]`); see [bub-discord](https://github.com/bubbuild/bub-contrib/tree/main/packages/bub-discord)|
79
+
| WeChat token file | After `bub login wechat`, credentials live under `~/.bub/wechat_token.json`; see [bub-wechat](https://github.com/bubbuild/bub-contrib/tree/main/packages/bub-wechat)|
80
+
|`BUB_DISCORD_TOKEN`| Discord bot token; see [bub-discord](https://github.com/bubbuild/bub-contrib/tree/main/packages/bub-discord)|
78
81
|`BUB_DISCORD_ALLOW_USERS`| Optional comma-separated allowlist (user id / username / global name) |
79
82
|`BUB_DISCORD_ALLOW_CHANNELS`| Optional comma-separated channel id allowlist |
|`BUB_MARIMO_PORT`| Marimo channel bind port (default: `2718`) |
82
85
|`BUB_MARIMO_WORKSPACE`| Workspace for insights (default: `BUB_WORKSPACE_PATH` or `.`) |
83
86
|`BUB_TAPESTORE_SQLALCHEMY_URL`| SQLAlchemy tape store URL (bundled) |
84
87
85
-
When`BUB_TAPESTORE_SQLALCHEMY_URL`is unset, bubseek builds a SeekDB/OceanBase URL from the `OCEANBASE_*` variables. Set either the full `mysql+oceanbase://...` URL or the `OCEANBASE_*` fields before running.
88
+
Set`BUB_TAPESTORE_SQLALCHEMY_URL`to the full `mysql+oceanbase://...` URL before running any tapestore-backed features.
86
89
87
90
## Builtin skills
88
91
@@ -93,14 +96,14 @@ bubseek also vendors skills at build time via `pdm-build-skills`; these are merg
93
96
-`friendly-python` and `piglet` from [PsiACE/skills](https://github.com/PsiACE/skills)
94
97
-`plugin-creator` from [bub-contrib/.agents/skills/plugin-creator](https://github.com/bubbuild/bub-contrib/tree/main/.agents/skills/plugin-creator)
95
98
96
-
The optional `bubseek[marimo]` extra provides:
99
+
The bundled marimo support provides:
97
100
-**MarimoChannel** — inbound WebSocket for gateway; chat dashboard at `http://0.0.0.0:2718/`
98
101
-**marimo skill** — output data insights as marimo `.py` notebooks; index of charts in `{workspace}/insights/`
The dashboard and index are generated into `{workspace}/insights/` at runtime from one canonical template source. They should not be hand-edited inside the repository.
102
105
103
-
Run `bubseek gateway --enable-channel marimo` to enable the marimo dashboard.
106
+
Run `bub gateway --enable-channel marimo` to enable the marimo dashboard.
0 commit comments