| domain | |||||
|---|---|---|---|---|---|
| tags |
|
||||
| datasets |
|
||||
| models | |||||
| license | Apache License 2.0 |
A lightweight Gradio chat agent with tape-first context management powered by Bub, SeekDB, and OceanBase. Built to be ModelScope-friendly while staying easy to run locally.
It provides:
- a
gradioBub channel for browser chat - OceanBase/seekdb dialect registration compatible with
bub-tapestore-sqlalchemy - a ModelScope-friendly
app.pythat boots Bub'sChannelManagerwithgradioenabled - the original three-pane Gradio UI/UX for tape, conversation, and anchors
The old private AppRuntime, custom tape store, and monkey patches inside the app layer have been removed.
- Keep the provided
Dockerfileanddocker/entrypoint.sh. - Exposed ports:
7860(Gradio) and2881(SeekDB). Entry file isapp.py. - Set environment secrets in Studio, e.g.
BUB_MODEL,BUB_API_KEY,BUB_API_BASE,BUB_TAPESTORE_SQLALCHEMY_URL, and theOCEANBASE_*values required by your seekdb deployment. - Build and run.
app.pystarts Bub's channel manager withgradioenabled, so opening the forwarded7860port reaches the Bub channel directly.
cp .env.example .env # fill in keys
make compose-up # builds and starts everythingThe UI is at http://localhost:7860. In Compose mode, SeekDB is only exposed on the internal Docker network so local port conflicts on 2881 do not block startup. Stop with make compose-down.
docker build -t endless-context:latest .
docker run --rm -p 7860:7860 -p 2881:2881 endless-context:latestuv sync
cp .env.example .env
make runapp.py starts the same shape you would get from:
uv run bub gateway --enable-channel gradioThat keeps the runtime aligned with Bub's extension model instead of a project-local forked runtime.
docs/index.mdcontains architecture, local/Docker workflows, and configuration details.
Apache License 2.0
- Bub: https://github.com/PsiACE/bub
- pyobvector: https://github.com/oceanbase/pyobvector
- SeekDB: https://www.oceanbase.ai/product/seekdb
- OceanBase: https://www.oceanbase.com/