Blob is an open-source, server-first personal assistant prototype. The user talks to one distinct companion while the server owns identity, memory, permissions, approvals, connectors, background work, and the final response contract. Local and hosted language models are replaceable reasoning adapters; they are not the product authority.
The design goal is an infinite pile with a tiny interface: projects, tasks, notes, routines, tools, and long-running work stay behind one conversation instead of becoming another dashboard.
Blob is under active development. Interfaces and schemas may change before the first stable release.
| Area | Current implementation |
|---|---|
| Conversation | Terminal and live FastAPI/WebSocket sessions with wake, listen, speech, sleep, knockout, and barge-in behavior |
| Reasoning | Keyless offline mode, local Ollama, Ollama Cloud, or OpenAI through one provider contract |
| State | SQLite for local use, Supabase/Postgres migrations for hosted accounts, distilled memory, projects, notes, tasks, and schedules |
| Tools | Approval-gated connector execution for GitHub, Codex, calendar, weather, web search, RSS, notes, TTS, and MCP servers |
| Background work | Queued tasks, scheduled routines, briefings, supervised autopilot, and visible activity state |
| Clients | Python terminal, Expo/React Native mobile app, Next.js account site, and Electron desktop face overlay |
| UI contract | Server-owned speech, captions, face state, Rive controls, content, and structured cards |
The web app is intentionally the public/account surface, not a second assistant. The mobile, desktop, terminal, and future voice clients remain thin.
terminal · mobile · desktop · web account surface
│
FastAPI / WebSocket boundary
│
server-owned runtime and policy
├── identity, memory, projects, tasks
├── approvals and connector execution
├── schedules and background work
└── response + face-state contract
│ │
reasoning provider storage
offline · Ollama · OpenAI SQLite · Postgres
│
suggested tool intent
│
ConnectorExecutor gate
│
external services
The important boundary is deliberate: the reasoning model may suggest text and actions, but the server decides what exists, what is connected, what needs approval, and what actually runs.
Run me on one computer, through the mobile cloud, or on your own server →
docs/architecture/deployment-profiles.md ·
the long local guide → docs/dev/local-development.md ·
the rest of my paperwork → docs/
Read the deeper contracts in
docs/architecture/server-first.md and
docs/product/companion-thesis.md.
Requirements: Python 3.12+.
git clone https://github.com/op-q/blob.git
cd blob
python3 -m venv .venv
.venv/bin/python -m pip install -e .
.venv/bin/python -m server.assistant_apiType blob to wake it. No API key is required: without a configured model,
Blob uses its deterministic offline adapter.
For a local model:
export OLLAMA_MODEL=qwen3:4b
.venv/bin/python -m server.assistant_apiConfiguration names and safe defaults are documented in
.env.example. Never commit a populated .env file.
Node 22 is required for the JavaScript workspaces.
npm install
npm run mobile:typecheck
npm run desktop:build
corepack prepare pnpm@11.7.0 --activate
pnpm --dir apps/web install --frozen-lockfile
pnpm --dir apps/web buildMore setup:
- Local server and API development
- Mobile and Rive development
- Desktop shell
- Web account surface
- Documentation index
- User-owned services are unavailable until the user explicitly connects them.
- Connector calls run through a central execution and approval gate.
- Sending, publishing, deploying, deleting, billing, and other consequential actions require explicit approval or remain blocked.
- Credentials are server-side and encrypted before storage.
- Structured data stays separate from personality speech.
- Hosted authorization and entitlement checks fail closed.
See connector ground rules and the security policy.
Run the full local check:
npm run checkThis runs the Python suite plus mobile, desktop, and web typechecks and the web unit tests. Production builds are separate:
pnpm --dir apps/web build
npm run desktop:buildContributions are welcome. Start with
CONTRIBUTING.md, follow the
CODE_OF_CONDUCT.md, and report vulnerabilities
privately through SECURITY.md.
- Website: blob.lifbom.com
- API health: api.blob.lifbom.com/health
- Terms · Privacy
The hosted service has its own terms and privacy notice. The open-source license does not grant access to hosted infrastructure, accounts, or user data.
Blob's original source code, documentation, and artwork are available under the
Apache License, Version 2.0. The license permits commercial use,
modification, and distribution subject to its terms. Third-party components
retain their own licenses; see NOTICE and
THIRD_PARTY_NOTICES.md.
The license does not grant permission to imply endorsement by op-q. See
TRADEMARKS.md.
