Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

125 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Blob, a sleepy red-panda slime

Blob

A conversation-first assistant operator with a tiny interface and a lot going on behind it.

CI CodeQL Apache-2.0 License Python 3.12+

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.

What Works

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.

Architecture

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.

Quick Start

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_api

Type 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_api

Configuration names and safe defaults are documented in .env.example. Never commit a populated .env file.

Run Other Surfaces

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 build

More setup:

Safety Model

  • 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.

Development

Run the full local check:

npm run check

This 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:build

Contributions are welcome. Start with CONTRIBUTING.md, follow the CODE_OF_CONDUCT.md, and report vulnerabilities privately through SECURITY.md.

Hosted Project

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.

License

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.

About

Open-source, server-first AI companion with local and hosted reasoning, memory, connectors, approvals, and web, mobile, desktop, and terminal clients.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages