Enchanted is a personal AI assistant focused on privacy.
The production release of the Enchanted app includes a subset of the features listed in this GitHub repository, as new functionalities undergo testing. Beta features are available in the development release.
Or browse all versions at GitHub releases.
- Fully local support (Ollama)
- Support for for requests proxy in a trusted enclave
- Support for Open source and Closed source LLMs
- Default MCP server support (Gmail, Google Drive, Calendar, X, Slack, Screenpipe)
beta
- Add custom MCP servers (stdio, remote)
beta
- Advance memory (fact extraction, memory consolidation, embedding search)
- Support for local embeddings (JinaAI)
- Support for local anonymiser model
pre-release
- Data Imports (WhatsApp, ChatGPT, Telegram, Slack, Google-Gmail, X, Local Files)
beta
- Voice mode and Voice onboarding
beta
- Global omnibar
- Scheduled tasks and periodic tasks
- Permissions management
- Light & Dark mode
What gives Enchanted the right to exist is a tremendous focus on privacy. Official release of Enchanted uses a combination of local models, open sources models in a Trusted Execution Environment as well as closed source models behind a privacy proxy.
- Requests to closed source models are proxied through a router running in a trusted execution environment, ensuring that closed source model providers cannot match requests to users.
- The embeddings model runs locally on the user's device.
- Voice models run in a trusted execution environment.
- Anonymiser model is running locally on the user's device.
beta
(Coming soon)
Main codebase for Enchanted is open source and available on GitHub. In addition the proxy codebase can be found here while the attestation proxy exposing cryptographic attestation documents generated by the Nitro Hypervisor for AWS Nitro Enclaves can be found here.
Developers on the other hand can chose one of many ways of using AI Completions and Embeddings in Enchanted depending on the privacy requirements.
Enchanted supports many predefined data sources to ingest data from. These data sources can be used to build the memory for your agent about you. All imported data is stored locally on the user's device.
Enchanted comes with built-in support for popular services:
- Gmail: Email management and search
- Google Drive: File access and organization
- Calendar: Schedule management and event creation
- X (Twitter): Social media interaction
- Slack: Team communication and workflow
- Screenpipe: Screen and audio capture analysis
Users can also add custom MCP servers following stdin or remote protocol.
- Fact Extraction: Automatically identify and store important information from conversations
- Memory Consolidation: Intelligently merge and organize related memories for better recall
- Embedding Search: Semantic search across your entire knowledge base
- Context Preservation: Maintain conversation context across sessions
Natural voice conversations with your AI assistant
Audio-guided setup process for hands-free configuration
Instantly open the Omnibar from any application with ⌘ + ⌥ + O
Set custom keyboard shortcuts for your most used actions.
Backend stack: Go, temporal, gqlgen, sqlc, nats, weaviate Frontend stack: Electron, React, Tanstack Router, Tailwind, shadcn
Requirements
- Go
- pnpm
- Node.js
- LLM (OpenAI, OpenRouter)
- Navigate to the
app
directory - Rename
.env.sample
to.env
and update the variables - Install packages
pnpm install
- Run the app
cd app && pnpm dev
- Navigate to
backend/golang
- Rename
.env.sample
to.env
and update env variables - Run the server
make run
Common development commands:
make build
- Build the binarymake test
- Run testsmake lint
- Auto-fix formatting and run lintersmake deadcode
- Check for unused codemake gqlgen
- Generate GraphQL resolversmake sqlc
- Generate database bindings
Backend
On the backend side GraphQL resolvers (schema.resolvers.go
) are code-generated from the schema schema.graphqls
. Steps to update the schema
- Propose schema changes in
schema.graphqls
. - Generate resolvers using
make gqlgen
inbackend/golang
directory. - This will generate additional code in
schema.resolvers.go
.
Frontend
Frontend uses schema.graphqls
as the source of truth to code generate queries/mutations/subscriptions using pnpm codegen
.
-
If you see a database (either SQLite or Weaviate) delete local directory
output
for testing. -
Application data on Mac is
~/Library/Application Support/enchanted
-
Logs data on Mac is
~/Library/Logs/enchanted