Skip to main content

A Bub distribution centered on Kimi as the default model and local screen-visual capture.

Project description

visual-base

Your brain is what you see.

Most "second brain" tools assume you will do the work of remembering — write the note, hit the highlight key, tag the page, file it under the right section. Whatever you didn't capture in the moment is gone. Whatever you did capture is a sample of what you chose to notice: a biased slice of a day you'll never get back.

visual-base starts from the opposite premise. It runs quietly in the background and records what your eyes actually land on — your screen, continuously, as compressed video. The browsing you forgot you did, the terminal error that flashed and closed, the Slack thread you scrolled past on the way to somewhere else, the Figma panel you stared at for thirty seconds. The raw stream is the archive. Structure comes out of it, not into it.

On top of the stream, visual-base ships:

  • bub_eye — a background screen recorder. Intel Mac, hardware HEVC via avfoundation, ~135 MB per 15-min 720p segment, self-restarts across sleep / wake / permission changes, near-zero CPU.
  • bub_kimi — Kimi as the default chat model, via the kimi CLI.
  • video-activity-log — a skill that turns any recorded segment into an Obsidian-linkable daily log. One bullet per coherent activity; [[wikilinks]] on every site, app, person, and project it can identify; an ffmpeg-based idle preflight short-circuits locked-screen segments before the model ever sees them.

Nothing here asks you to be disciplined. If it was on your screen, it's in the tape.

Status

v0.1 — Intel Mac only, recording-first. bub_eye captures to ~/.bub/eye/segments/. The video-activity-log skill reads individual segments on demand. Model-side ingestion of the full stream — searching across days, a @tool over the tape, prompt injection of recent context — is on the roadmap but not in this release. So are Apple Silicon and Linux capture backends.

Install

From PyPI:

pip install visual-base              # Kimi chat only
pip install "visual-base[mac]"       # Intel Mac — adds bub_eye screen recording

For local development:

uv sync                              # or: uv sync --extra mac (Intel Mac)
cp .env.example .env                 # fill in BUB_KIMI_* values

The first uv run bub / visual-base call that talks to Kimi will detect a missing kimi binary and auto-install kimi-cli via uv tool install — no separate step needed. Pre-warm it with just setup / just setup-mac (e.g. in a Dockerfile layer).

On Intel Mac, macOS will prompt for Screen Recording permission the first time bub_eye spawns ffmpeg. The grant is path-specific — re-grant if you switch to a system ffmpeg via BUB_EYE_FFMPEG.

Why uv tool install instead of bundling kimi-cli as a dependency?

kimi-cli is an application, not a library — bub_kimi shells out to the kimi binary via create_subprocess_exec. Bundling it into the same venv would pull in ~50 extra packages and pin pydantic/typer to specific versions that constrain future bub upgrades. uv tool install puts kimi-cli in its own venv under ~/.local/bin/kimi, which is already on PATHbub_kimi's subprocess finds it there.

Run

uv run bub --help
uv run visual-base --help   # alias for the same CLI

Layout

pyproject.toml       # hatchling build, publishes visual-base to PyPI
LICENSE              # MIT
src/visual_base/     # distribution-level defaults and version
src/bub_kimi/        # Kimi CLI plugin (entry-point: bub.kimi)
src/bub_eye/         # Screen-capture plugin (entry-point: bub.eye)
src/skills/          # Builtin skills shipped with the wheel
tests/               # ruff + pytest run against the flat layout

Releasing

Tag-driven. Edit version in pyproject.toml, commit, then:

git tag v0.1.0
git push --tags

.github/workflows/release.yml runs ruff + pytest, checks the tag matches the project version, builds sdist + wheel with uv build, and publishes via PyPI trusted publisher (OIDC). A Pending publisher for oilbeater/visual-baserelease.yml → environment pypi must be configured on PyPI first.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

visual_base-0.1.0.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

visual_base-0.1.0-py3-none-any.whl (27.4 kB view details)

Uploaded Python 3

File details

Details for the file visual_base-0.1.0.tar.gz.

File metadata

  • Download URL: visual_base-0.1.0.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for visual_base-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9bfa595a4ca85aa320e6a8332609e212ac117d20affca547288fb8a9260d28b0
MD5 e36d357662efc07c1687b3e8ac3d28ce
BLAKE2b-256 673d846019076313684f0e69ce413f8ee8d82da38e44fa30b0813380a0b0842e

See more details on using hashes here.

Provenance

The following attestation bundles were made for visual_base-0.1.0.tar.gz:

Publisher: release.yml on oilbeater/visual-base

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file visual_base-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: visual_base-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for visual_base-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa83286a3ebefa249aefd2ef76c8d61c4edb066bd2d9b585053e25697e3c60e8
MD5 6595a1c0a9f5c26d4b321cbae8979f41
BLAKE2b-256 bf812e15abcb9e826e4f74c0fd48dd758e0e54bee88407d7641f48730f5e3248

See more details on using hashes here.

Provenance

The following attestation bundles were made for visual_base-0.1.0-py3-none-any.whl:

Publisher: release.yml on oilbeater/visual-base

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page