| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Record locally. Make recordings AI-ready. Run workflows on top.
Record → Query → Automate
Install · Features · Docs · Report Bug
Bloom is a local-first screen recorder built for agentic workflows.
Recordings are no longer files, they are inputs for AI.
Run this in your terminal to install Bloom:
curl -fsSL https://artifacts.videodb.io/bloom/install | bashThis will automatically detect your Mac architecture, download the right build, and install it to /Applications.
Manual installSupported on macOS and Windows (pre-built installer available for macOS). Linux support coming soon.
| Feature | Description |
|---|---|
| No subscription | Pay only for usage |
| Local-first | Record locally, no lock-in |
| AI-ready | Search, summarize, extract |
| Screen recording | Capture screen, microphone, and system audio via VideoDB Capture SDK |
| Camera overlay | Draggable camera bubble during recording |
| Floating bar | Always-on-top control bar that never blocks your apps |
| Multi-monitor | Display picker to choose which screen to record |
| Library | Browse, search, play, rename, and download recordings |
| Transcription | Automatic transcript generation with subtitled playback |
| Chat with video | Ask questions about your recording via VideoDB Chat |
| Share | One-click shareable link for any recording |
| Keyboard shortcut | Cmd+Shift+R to start/stop recording from anywhere |
| Open source | Fully customizable UI layer |
Bloom = UI layer (open source) VideoDB = Intelligence layer (cloud)
graph LR
subgraph EA[" Electron App "]
R["Renderer UI"]
M["Main Process"]
DB[("SQLite")]
R -->|IPC| M
M --> DB
M --> SDK
end
subgraph VS[" VideoDB SDK "]
SDK["Node SDK"]
CC["CaptureClient"]
WS["WebSocket"]
API["Connection API"]
BIN["Native Binary"]
SDK --> CC & WS & API
CC --> BIN
end
subgraph LC[" Local Capture "]
SC["Screen Capture"]
MIC["Microphone"]
SA["System Audio"]
BIN --> SC & MIC & SA
end
subgraph VC[" VideoDB "]
UPLOAD["Upload & Export"]
STREAM["HLS Streaming"]
IDX["Indexing"]
TRX["Transcription"]
UPLOAD --> STREAM
IDX --> TRX
end
BIN -->|"upload chunks"| UPLOAD
WS -->|"session events"| UPLOAD
API -->|"index / transcribe"| IDX
classDef orange fill:#2e1a08,stroke:#EC5B16,stroke-width:1.5px,color:#f5a36a
classDef amber fill:#2e2008,stroke:#E8A317,stroke-width:1.5px,color:#f5d080
classDef red fill:#2e0d08,stroke:#FF4000,stroke-width:1.5px,color:#ff8a60
classDef green fill:#0d2e1a,stroke:#4CAF50,stroke-width:1.5px,color:#8ed4a0
classDef db fill:#1a1208,stroke:#EC5B16,stroke-width:1.5px,color:#f5a36a
class R,M orange
class SDK,CC,WS,API,BIN amber
class SC,MIC,SA red
class UPLOAD,IDX,TRX,STREAM green
class DB db
style EA fill:#1a0e04,stroke:#EC5B16,stroke-width:2px,color:#f5a36a
style VS fill:#1a1504,stroke:#E8A317,stroke-width:2px,color:#f5d080
style LC fill:#1a0804,stroke:#FF4000,stroke-width:2px,color:#ff8a60
style VC fill:#071810,stroke:#4CAF50,stroke-width:2px,color:#8ed4a0
Recording flow: The app creates a CaptureClient which spawns a native binary to capture screen, mic, and system audio. Chunks are uploaded to VideoDB Cloud in real-time. A WebSocket connection delivers session events (started, stopped, exported) back to the app.
Post-recording: Once the video is exported, the app calls the VideoDB API to index spoken words, generate a transcript, and create a subtitled stream — all available for in-app HLS playback or sharing via URL.
The UI layer is fully open source.
Bloom is not just a tool. It's a foundation for building agentic systems on top of recordings.
Your recorder should not trap your data.
It should:
Bloom is built for that future.
npm install
npm startOn first launch, grant microphone and screen recording permissions, then enter your VideoDB API key.
src/
├── main/ # Electron Main Process
│ ├── index.js # App entry, windows, tray, IPC routing
│ ├── db/
│ │ └── database.js # SQLite via sql.js
│ ├── ipc/ # IPC handlers
│ │ ├── capture.js # Recording start/stop, channels, devices
│ │ ├── permissions.js # Permission check/request/open settings
│ │ ├── camera.js # Camera bubble control
│ │ ├── history.js # Library: recordings list, delete, sync
│ │ └── auth.js # Login, logout, onboarding
│ ├── lib/ # Utilities
│ │ ├── config.js # App config
│ │ ├── logger.js # File + console logging
│ │ ├── paths.js # App paths (DB, config, logs)
│ │ └── videodb-patch.js # Binary relocation for packaged apps
│ └── services/
│ ├── videodb.service.js # VideoDB SDK wrapper
│ ├── session.service.js # Session tokens, WebSocket, sync
│ └── insights.service.js # Transcript + subtitle indexing
├── renderer/ # Renderer (context-isolated)
│ ├── index.html # Floating bar page
│ ├── renderer.js # Bar init + event routing
│ ├── permissions.html # Permissions modal window
│ ├── onboarding.html # Onboarding modal window
│ ├── history.html # Library window
│ ├── history.js # Library — list, player, download, share, sync
│ ├── display-picker.html # Display picker popup
│ ├── camera.html # Camera bubble
│ ├── ui/
│ │ └── bar.js # Bar controls, toggles, timer, devices
│ ├── utils/
│ │ ├── permissions.js # Permission check/request utility
│ │ └── logger.js # Renderer-side logging
│ └── img/ # Icons, brand assets, animated previews
└── preload/
└── index.js # Context bridge (renderer ↔ main)
build/
├── afterPack.js # electron-builder hook (codesign, plist patch)
├── entitlements.mac.plist # macOS entitlements
└── icon.icns # App icon
# Delete the app database (stored in Electron userData)
# macOS
rm ~/Library/Application\ Support/bloom/bloom.db
rm ~/Library/Application\ Support/bloom/config.jsonThen run npm start
# Build directory (for testing)
npm run pack
# Build DMG installers (macOS arm64 + x64)
npm run distMIT
Made with love by the VideoDB team
| Back | FazBrowse Home | New Git URL |