Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 50 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,52 @@
# ConductLoop

> Local-first second brain and AI-agent cockpit. Python + SQLite backend, native macOS app (Tauri), bring-your-own-key models.
> Your notes, searchable and askable, on your own computer. Free and open source (MIT).

ConductLoop indexes your own material — an Obsidian vault, memory/notes folders, code repositories, a skills directory, project playbooks and a list of URLs you want to watch — into a single local SQLite database with full-text search (FTS5), fuzzy matching and optional local semantic embeddings. On top of that index it runs a **Brain** (RAG chat with citations) and a set of AI agents/teams (Boardroom, tasks, runs, scheduler) using the model provider *you* configure.
![ConductLoop: your notes, a box to ask, search and the recent notes](docs/screenshots/02-your-notes.png)

- **Website:** <https://conductloop.com>
- **macOS builds:** [EVMCOD/conductloop-releases](https://github.com/EVMCOD/conductloop-releases/releases/latest)
- **Price:** free. There is no license gate, subscription or trial in the app.
ConductLoop reads your notes (an Obsidian vault or any folder of Markdown) and lets you search them and ask questions about them. Answers come from your notes, with their sources. Everything stays on your computer: the index is a local SQLite file, and the AI is the model you choose, with your own key (Anthropic, OpenAI, MiniMax, any OpenAI-compatible server, or a local Ollama). Without a key it still searches, and answers with the lines of your notes that match.

> The Python package is still named `ops_dashboard` for backwards compatibility. The product name is **ConductLoop**.
It never writes into your notes folder: its own notes (daily briefing, agent notes) go to a folder of their own.

## Download

| System | Download | Notes |
|---|---|---|
| macOS 13 or later, Apple Silicon | [ConductLoop.dmg](https://github.com/EVMCOD/conductloop-releases/releases/latest/download/ConductLoop-macos-aarch64.dmg) | Signed and notarized. Updates itself (ConductLoop → Check for Updates…). The in-app browser needs macOS 14 or later. |
| **Linux** x86_64 · beta | [AppImage](https://github.com/EVMCOD/conductloop-releases/releases/download/v1.2.3-linux-experimental.1/ConductLoop_1.2.3_amd64.AppImage) · [.deb](https://github.com/EVMCOD/conductloop-releases/releases/download/v1.2.3-linux-experimental.1/ConductLoop_1.2.3_amd64.deb) | Tested on Ubuntu 22.04 and 24.04. No in-app browser; no automatic updates yet. |
| **Windows** 10/11 x64 · beta | [setup.exe](https://github.com/EVMCOD/conductloop-releases/releases/download/v1.2.3-windows-experimental.1/ConductLoop_1.2.3_x64-setup.exe) | Not code-signed, so SmartScreen says "Windows protected your PC": click **More info**, then **Run anyway**. No in-app browser; no automatic updates yet. |

All releases, with checksums: [conductloop-releases](https://github.com/EVMCOD/conductloop-releases/releases).

## The first minute

1. **Open it.** The welcome page asks for the folder with your notes ("Choose…") and indexes it.
2. **Ask or search** from the home page. Each result opens the note.
3. **Optional:** paste an AI key in Credentials for written answers. It is stored in the system keychain (the Keychain on a Mac) or in an encrypted file, and never shown again.

| Ask your notes | Search them |
|---|---|
| ![The Brain answering from the notes, with numbered sources](docs/screenshots/04-ask-your-notes.png) | ![Search results with the words around each match](docs/screenshots/03-search.png) |

## And beyond your notes

- **A team of AI agents.** Ask the CEO agent and it splits the work across a CTO, Head of Product, CMO and CFO, and writes one answer. Or create your own agents with tools and a schedule.
- **Connectors** for GitHub, Slack, Gmail and more, read-only unless you allow writes; every write waits for your confirmation. They keep their tokens in the system keychain only, so they need macOS or Linux with a keyring.
- **MCP both ways.** Plug MCP servers in as tools for your agents (read-only by default; anything that writes waits for you). From a source install, `ops mcp` lets Claude or another agent search and ask your notes.
- **Backups** of the local database, daily and before every upgrade, restorable from Setup.
- **It learns from your 👍/👎**: proposed rules that you approve, all stored on your computer.

The screenshots use a fictional vault. Dark theme: ◐ in the corner.

---

## Principles
## For developers

### Local-first
> The Python package is still named `ops_dashboard` for backwards compatibility. The product name is **ConductLoop**.

### Principles

#### Local-first
- The server is a stdlib `http.server` that binds to `127.0.0.1:7777` by default.
- All indexed content, memory, tasks and settings live in a local SQLite file (`ops.db`). Location, in order of precedence:
1. `$OPS_DATA_DIR/ops.db`
Expand All @@ -25,7 +57,7 @@ ConductLoop indexes your own material — an Obsidian vault, memory/notes folder
- Error reporting to Sentry is **opt-in** (only if you set `SENTRY_DSN`).
- If you install `sentence-transformers`, the embedding model (`all-MiniLM-L6-v2`) is downloaded once from Hugging Face and then runs locally.

### BYOK (bring your own key)
#### BYOK (bring your own key)
The Brain talks directly to the provider you configure; nothing is proxied through ConductLoop servers.

| Provider (`BRAIN_PROVIDER`) | Needs |
Expand All @@ -41,12 +73,9 @@ The Brain talks directly to the provider you configure; nothing is proxied throu

---

## Install

### macOS app
Download the latest `.dmg` from [conductloop-releases](https://github.com/EVMCOD/conductloop-releases/releases/latest), drag ConductLoop to `/Applications` and open it. Requires **macOS 13 (Ventura) or later** on Apple Silicon; the built-in browser needs **macOS 14 (Sonoma) or later** (on macOS 13 everything else works). The app is a Tauri v2 shell that starts the bundled Python server as a sidecar and shows it in a native WebView.
### Install

### From source (macOS / Linux)
#### From source (macOS / Linux)
Requires Python **3.13+** (CI runs 3.14).

```bash
Expand All @@ -71,14 +100,14 @@ Dependency sets:

`pip install -e .` also installs the `ops` CLI entry point.

### Configuration
#### Configuration
A fresh install is empty: no projects, teams or URLs. Point it at your content with environment variables (see `.env.example`), e.g. `OPS_VAULT_ROOT`, `OPS_WORKSPACE`, `OPS_SKILLS_DIR`, `OPS_REPOS`, `OPS_PROJECTS_FILE`, `OPS_LIVE_URLS_FILE`. Set `CONDUCTLOOP_DEMO=1` (with a throwaway `CONDUCTLOOP_DB_PATH` and `OPS_DATA_DIR`) to load fictional demo data instead; see [`docs/FIRST-5-MINUTES.md`](docs/FIRST-5-MINUTES.md).

Optional notification webhooks (Slack / Discord / Telegram) are described in `config.example.json`. Remote access from a phone is documented in [`docs/REMOTE.md`](docs/REMOTE.md) (Tailscale; nothing is exposed publicly by default).

---

## Usage
### Usage

```bash
make help # list targets
Expand All @@ -94,7 +123,7 @@ Selected `ops` / `python -m ops_dashboard` commands: `index`, `find`, `brain`, `

---

## Development
### Development

```bash
python3 -m venv .venv && . .venv/bin/activate
Expand All @@ -108,7 +137,7 @@ pytest -m "not live" # hermetic test suite (what CI runs)

Tests marked `live` need the network or real credentials; they never run by default or in CI.

### Layout
#### Layout
```
ops_dashboard/ Python package: server.py (HTTP API + UI), cli.py (typer CLI),
db*.py (SQLite schema/queries), brain.py (RAG + providers),
Expand All @@ -119,16 +148,16 @@ scripts/, bin/ launchd jobs, release and maintenance scripts
tests/ pytest suite
```

### Desktop app
#### Desktop app
See [`desktop/README.md`](desktop/README.md) and [`desktop/docs/DISTRIBUTION.md`](desktop/docs/DISTRIBUTION.md). Building and signing a release needs your own Apple Developer ID and your own Tauri updater key; neither is in this repository.

Linux (experimental) and Windows are **not shipped**. [`docs/PORTABILITY.md`](docs/PORTABILITY.md) is the audit of everything that is macOS-only today, with the plan to port it.

---

## Contributing & security
### Contributing & security
- [CONTRIBUTING.md](CONTRIBUTING.md)
- [SECURITY.md](SECURITY.md) — please report vulnerabilities privately, not in public issues.

## License
### License
[MIT](LICENSE). The ConductLoop name and logo are not covered by the license.
Binary file added docs/screenshots/01-welcome.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/02-your-notes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/03-search.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/04-ask-your-notes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/07-your-notes-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading