Skip to main content

Carole.ai logo on a white background

www.caroleai.com

Carole.ai is a local AI agent workspace with chat, project tools, memory, MCP integrations, browser automation, and a Kanban board. The PyPI package includes the built web interface: one caroleai command runs the FastAPI backend and serves the frontend from the same address.

The public landing page is caroleai.com.

It does not host accounts or the backend: Sign in and Sign up open http://127.0.0.1:8000 on the visitor's own computer after they install and start Carole.ai.

Animated preview of the Carole.ai demo

Click the preview to watch the full video with sound.

Install and run

Use Python 3.11 or 3.12. A virtual environment is recommended:

python -m venv .venv
# macOS/Linux: source .venv/bin/activate
# Windows PowerShell: .venv\Scripts\Activate.ps1
python -m pip install carole.ai
caroleai

Open http://127.0.0.1:8000. The first account created becomes the local instance owner. Application data is stored in ~/.carole by default. Node.js and Docker are not required for the PyPI installation.

You can also install the command with pipx install carole.ai. To use browser automation, install the Chromium browser once with playwright install chromium. Connect an AI model provider in the app's settings or supply its API key through your environment.

To use Google Workspace tools, open Settings → Google Workspace Integration and choose Connect Google Account. Carole opens Google's consent page for the user's own account; no shared Google login is used. Refresh and access tokens remain on that computer in Windows Credential Manager, macOS Keychain, or Linux Secret Service. Read operations can run directly, while sending email or creating, editing, trashing, or deleting Google data requires human approval.

Run caroleai --help for options including --port, --data-dir, and --no-browser. The command binds to 127.0.0.1 by default. Keep it local unless you have deliberately secured access: the instance owner can use host-level capabilities such as shell, Git, plugins, and browser automation.

For persistent login sessions, set a stable, random JWT_SECRET in your environment or .env file before starting Carole.ai. Without one, a new secret is generated on each restart and existing sessions are invalidated. Never commit API keys or secrets to this repository.

Features

  • Hybrid GraphRAG memory with LanceDB and a networkx code graph.
  • MCP integrations and a dynamic tool registry.
  • Gmail, Calendar, Meet, and Google Tasks integration through local OAuth.
  • Browser and meeting workflows, including Google Meet integration.
  • Real-time Kanban and project-management tools.

Develop from source

The public GitHub repository contains both the FastAPI backend and the Next.js frontend. The following is for contributors working on the source; it is not needed to run the PyPI package.

Prerequisites: Python 3.11 or 3.12 and Node.js 22. From the repository root, create a Python environment and install the backend requirements:

python -m venv .venv
# Activate .venv for your shell, then:
python -m pip install -r backend/requirements.txt
cd backend
uvicorn main:app --reload

In another terminal, start the frontend:

cd frontend
npm ci
npm run dev

The development frontend is at http://localhost:3000, the API at http://localhost:8000, and API documentation at http://localhost:8000/docs. Set provider API keys in your own local environment if you want to use model-backed features.

Source, bug reports, and contributions are available through GitHub and its issue tracker.

Instance owner and upgrade notes

The first account created is automatically the local instance owner. An operator can optionally set CAROLE_OWNER_ID to an account UUID as a recovery override. The instance owner controls host capabilities: terminal/shell access, Git, browser automation, plugins, MCP servers, external workspace paths, and instance settings/model/prompt administration. These operations are unavailable until an owner is configured. Project ownership alone does not grant access to the host machine. Host tools run with the backend OS account's privileges; this is not an OS sandbox for untrusted tenants.

File, search, Git, and history APIs require an owned project UUID. Clients must use the backend Git API; the former Next.js Git endpoint returns HTTP 410. Attachments require authenticated downloads. Google accounts must reconnect through Settings after upgrading: credentials are stored separately per account in the operating-system credential vault, and any legacy private token file is migrated and removed. The bundled public Desktop OAuth client ID identifies Carole.ai; no OAuth client secret is included in the repository or package. It grants no Google account access by itself—access begins only after the user consents locally through the PKCE-protected flow. The OAuth start request must include browser credentials so its callback can verify the initiating browser.

Docker stores application data in the carole_data volume at /data/carole. Back up and copy any existing .carole data into that volume before switching an existing deployment; creating the volume does not migrate old data. An explicit DATABASE_URL or CAROLE_HOME_DIR override must point to persistent storage. Playwright browsers are installed at a path available to the non-root app user.

Metadata

Release files for carole.ai 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for carole.ai 0.1.4
File Size Uploaded
carole_ai-0.1.4.tar.gz 12.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for carole.ai 0.1.4
File Interpreter ABI Platform
carole_ai-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 24.0 MB

Release files / carole_ai-0.1.4.tar.gz

Download URL carole_ai-0.1.4.tar.gz
Size 12.0 MB
Tags Source
SHA-256 checksum
How to use checksums
37067736444f19de8cf8247477ac3111db7330aa5650a806fae6dd43bae3469a
BLAKE2b-256 checksum
How to use checksums
53505d75ba1ad50700a8f8689b716021db729c59ac755b00131d5f49a87feb89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / carole_ai-0.1.4-py3-none-any.whl

Download URL carole_ai-0.1.4-py3-none-any.whl
Size 12.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
7b3118beaab4888b55583f402721397620bde225e8d85ab2360e87908795a8dd
BLAKE2b-256 checksum
How to use checksums
4d952d3e9288cfd136467dc54857e99dc69942446b742cbae2551873345fcf15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.6

2 release files

0.1.5

2 release files

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page