A Bub distribution centered on Kimi as the default model and local screen-visual capture.
Project description
visual-base
The second brain from your eyes.
Other "second brain" tools ask you to do the remembering — write the note, hit the highlight, tag the page. Whatever you didn't capture is gone; what you did is a biased sample.
visual-base records what your eyes actually land on — your screen,
continuously, as compressed video. The raw stream is the single
source of truth; every derived artifact — activity logs, search
indexes, future tool-use over the tape — comes out of it, never
replaces it. If it was on your screen, it's in the tape.
What ships:
bub_eye— background screen recorder. macOS (Intel + Apple Silicon), hardware HEVC viaavfoundation, ~10 MB per 15-min segment, near-zero CPU.bub_kimi— Kimi as the default agent for video understanding and daily-log generation.video-activity-log— turns any segment into an Obsidian-linkable daily log, one bullet per activity, with[[wikilinks]]on every site, app, person, and project it can identify.
Install
uv tool install visual-base
bub_eye's ffmpeg binary ships in the wheel via imageio-ffmpeg.
kimi-cli auto-installs as a separate uv tool on the first Kimi call.
Authenticate Kimi once. Either log in through the TUI (after uv tool install kimi-cli):
kimi login
or set an API key via env vars:
cp .env.example .env # then fill in BUB_KIMI_*
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.
For local development
uv sync
cp .env.example .env
uv run visual-base --help
just setup bundles uv sync with a pre-warmed uv tool install kimi-cli for Dockerfile / CI caches.
Run
uv tool run visual-base gateway
Starts the recorder and Kimi chat channel together. Everything lives
under $BUB_HOME (default ~/.bub/):
- Video segments —
~/.bub/eye/segments/eye_YYYYMMDD_HHMMSS.mp4 - Daily activity logs —
~/.bub/eye/logs/YYYY-MM-DD.md
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file visual_base-0.2.0.tar.gz.
File metadata
- Download URL: visual_base-0.2.0.tar.gz
- Upload date:
- Size: 37.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e84db6de5dfb65b6169285f58e11b92701a184677cc4a5b89a93651a8a4ecf0
|
|
| MD5 |
d3938f98f8128b098bea57db8565bc6f
|
|
| BLAKE2b-256 |
a2f9067920adbb37084823ca065ea0dd1f4105ce5adb0f54ce7980854b23a4cc
|
Provenance
The following attestation bundles were made for visual_base-0.2.0.tar.gz:
Publisher:
release.yml on oilbeater/visual-base
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
visual_base-0.2.0.tar.gz -
Subject digest:
7e84db6de5dfb65b6169285f58e11b92701a184677cc4a5b89a93651a8a4ecf0 - Sigstore transparency entry: 1356409332
- Sigstore integration time:
-
Permalink:
oilbeater/visual-base@e48af1ccdfad55ebc7acb0a22518c16bc901dbf1 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/oilbeater
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e48af1ccdfad55ebc7acb0a22518c16bc901dbf1 -
Trigger Event:
push
-
Statement type:
File details
Details for the file visual_base-0.2.0-py3-none-any.whl.
File metadata
- Download URL: visual_base-0.2.0-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3031e55a0a8d79e09c6cbd1c57c4c5745fff5b03fa8c049c7d069bf348e35ac
|
|
| MD5 |
b80eea14a46b01b980d0342cde3fa06c
|
|
| BLAKE2b-256 |
4ca4164e246712afedf7df571f180b859f545c5b20dc29000a194c8c84eb72ea
|
Provenance
The following attestation bundles were made for visual_base-0.2.0-py3-none-any.whl:
Publisher:
release.yml on oilbeater/visual-base
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
visual_base-0.2.0-py3-none-any.whl -
Subject digest:
d3031e55a0a8d79e09c6cbd1c57c4c5745fff5b03fa8c049c7d069bf348e35ac - Sigstore transparency entry: 1356409382
- Sigstore integration time:
-
Permalink:
oilbeater/visual-base@e48af1ccdfad55ebc7acb0a22518c16bc901dbf1 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/oilbeater
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e48af1ccdfad55ebc7acb0a22518c16bc901dbf1 -
Trigger Event:
push
-
Statement type: