Skip to content

Repository files navigation

Attune

Attune is a memory-aware assistant for Gmail, Google Calendar, Google Chat, and Slack. It answers natural-language Workspace questions from live data, drafts and triages work, prepares briefs, detects scheduling conflicts, and earns autonomy through explicit, audited grants.

Choose how you run Attune

Attune ships as one product with two deployment modes. Full detail, exact commands, and the tradeoffs between them are in the deployment modes guide; this table is the short version.

Mode Who it's for How you run it
Self-hosted, polling (the default) One person, on their own machine, VM, or server attune init --quickattune doctorattune run
Self-hosted, Google Pub/Sub push The same one person, wanting lower-latency push instead of polling The polling setup above, plus Pub/Sub and the stateless republisher
Hosted multi-tenant, as a customer Someone signing in to an operator-run instance Sign in with Google in a browser — nothing to install
Hosted multi-tenant, as the operator Whoever runs the service on GCP for others Terraform (foundation → data → runtime → edge), then gate-by-gate activation

Self-hosted is the only mode that is fully built and runnable today; hosted multi-tenant is a development-stage platform gated behind default-off activation flags and is not publicly operated. See the modes guide for what that means in practice.

Why the name

Attune describes the product's purpose: adapting to a principal's context, preferences, and working rhythm. The Python distribution and command are both attune.

Architecture choices

  • Any OpenAI-compatible /chat/completions provider works through the official openai SDK. Configure a base URL, bearer credential, and model IDs; there is no provider-specific client.
  • Workspace access is selectable: direct Google OAuth is the default, while an MCP Streamable HTTP backend provides a useful credential and policy boundary.
  • One instance acts for one principal. There is no organization-specific or “personal versus corporate” mode.
  • Hosting is portable. Polling is the simplest transport; Google Pub/Sub is an explicitly Google-specific advanced option.
  • Slack and Google Chat are optional, independently routable surfaces. Briefs and notifications can go to several channels; approvals go to one channel to avoid duplicate decisions.

Quick start

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,orchestrator,memory,google,slack,mcp]"
cp .env.example .env
attune init --target local
attune brief
attune run

This is the self-hosted, polling path. For the Pub/Sub push variant or the hosted multi-tenant service, see the deployment modes guide.

The local target edits the environment, displays its deterministic deployment plan, starts the pinned Qdrant service on 127.0.0.1:6333, and runs the full Doctor battery. Setup progress is resumable from ~/.attune/setup-state.json; the state contains no configuration values or credentials. Use --yes only when you have already reviewed the displayed local plan and want non-interactive application.

After setup, attune status reads only the secret-free progress record; attune status --check also runs live diagnostics. attune repair previews and reapplies the same owned local plan, then validates it again. Repair refuses to infer or modify resources when no matching setup record exists.

attune init edits an existing .env in place: current values become defaults, comments and unknown keys are preserved, legacy names are migrated, and a .env.bak backup is written. Use attune init --fresh only when you explicitly want a new configuration. Without --target local, initialization remains configuration-only.

Use attune init --quick for the shortest path through the wizard: it asks only the essential questions (workspace backend, data directory, mailbox, internal domains, LLM base/key/default model, embedding model/key) and defaults everything else, printing the follow-up commands for channels and Google credentials. Add --recommended (with --quick or the full wizard) to fill the documented mixed-provider model routing from configuration.md as editable defaults. Use attune init --google-setup for a guided, resumable checklist through the Google Cloud Console ceremony, with exact copy-paste values and no silent cloud mutations.

Where to go next

Development

pip install -e ".[dev]"
pytest -q

Attune is MIT licensed.

About

A memory-aware self-learning assistant for Gmail, Google Calendar, Google Chat, and Slack, reachable by text and voice.

Resources

Contributing

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages