Skip to main content

eVi — personal AI assistant

PyPI Downloads Docker (GHCR) GHCR pulls Python 3.13+ License: MIT

eVi 1.0 — shipped and public. Local-first personal assistant. Chat with a model on your hardware, let it use tools, generate images, automate scheduled tasks, drive your browser, and reach the same core from a terminal, a web app, or a native desktop window.

One Python core, three frontends, no cloud round-trips.

       ┌──────────────────────────────┐
       │       evi (core library)     │
       │  Agent · Tools · Memory ·    │
       │  Skills · Hooks · MCP ·      │
       │  Scheduler · Dream · …       │
       └────┬──────────┬──────────┬───┘
            │          │          │
        ┌───▼──┐   ┌───▼──┐   ┌───▼────┐
        │ CLI  │   │ Web  │   │Desktop │
        │      │   │ SSE  │   │ Tauri  │
        └──────┘   └──────┘   └────────┘

Requirements

Component Why Notes
Python 3.13+ Core runtime 3.13 tested
Git 2.17+ Optional — evi worktree 2.28+ for init -b
An LLM backend One of LM Studio / Ollama / llama-server / any OpenAI-compatible endpoint LM Studio default
NVIDIA GPU Optional — speeds up local LLMs and ComfyUI image gen CPU fallback works

Quickstart

Package name: the project is eVi, but the PyPI distribution is evi-assistant (the bare evi name was taken). Install with pip install evi-assistant; the import package and CLI command are both still evi (import evi, run evi).

pip install evi-assistant                # from PyPI
evi models recommend                     # honest read on what'll fit
evi chat                                 # off you go

Or work from a clone (editable install, all extras):

git clone https://github.com/evi-assistant/evi-ai.git evi && cd evi
py -3.13 -m venv .venv
.venv\Scripts\Activate.ps1            # Windows
# source .venv/bin/activate            # Linux / macOS

pip install -e .

# Pick a backend. LM Studio + a tool-capable model is the easiest first run.
# In LM Studio: load qwen2.5-7b-instruct → Developer → Start Server.

evi models recommend                    # honest read on what'll fit
evi chat                                # off you go

/help inside the REPL lists every slash command (goal tracking, plan mode, auto-approve, model switching, user-defined templates).

Three-machine setup

eVi is built to span machines. A typical setup:

Machine Role Backend
AI server (P40) LLM host + web UI Ollama or llama-server, evi web on port 8000
Desktop (16 GB) Full power workstation Local LM Studio
Laptop (2 GB) Thin client Profile points at the AI server

See docs/multi-machine.md for the wiring.

Major commands

evi chat                           Start the REPL
evi web --host 0.0.0.0             Run the FastAPI + SSE web UI
evi dream                          Curate long-term memory from yesterday's chats
evi models recommend / list / use  Hardware-aware model selection
evi models pull <ref>              Pull via Ollama tag or hf:<repo>:<file>
evi schedule add / list / run-now  Cron-style scheduled prompts
evi scheduler                      Foreground daemon for scheduled tasks
evi worktree create <branch>       Spin up a git worktree for parallel work
evi profile add home --backend …   Per-machine config overlays
evi voice listen / speak           STT + TTS
evi mcp list-tools                 Show MCP server-provided tools
evi mcp serve                      Run eVi AS an MCP server (other agents use eVi's tools)

What's built

Everything below ships in 1.0. Gmail / Microsoft 365 email is the one deferred surface — scaffolded but off by default.

Feature Status
Foundation, CLI, agent loop, fs/code tools
ComfyUI image generation
FastAPI + SSE web UI
Tauri desktop shell (local + remote modes)
Persistent memory + scoped subagents
MCP (Model Context Protocol) integration
Skills + scheduled tasks
Backends, model registry, hardware recommender, profiles
EVI.md, slash commands, /goal, plan mode
Hooks, auto mode, git worktrees
Transcripts, dreaming, web search, voice TTS, computer use
STT, web UI parity, polish
Gmail / Microsoft 365 email ⏸ deferred

Layout

evi/                core library
  agent.py          agent loop with permission + hooks
  backends/         LM Studio / Ollama / llama.cpp / OpenAI-compat
  llm/              client + subagent runner
  tools/            built-in tool catalog (fs, code, image, web, voice, …)
  mcp/              MCP client bridge + manager
  memory.py         long-term memory store
  skills.py         user skill packets
  scheduler.py      APScheduler driver
  dream.py          memory-consolidation runner
  hardware.py       GPU + RAM detection
  recommend.py      curated model picks per VRAM
  …
  apps/             frontends that consume the core (shipped in the wheel)
    cli/main.py     Typer CLI
    web/server.py   FastAPI + SSE
    web/static/     chat UI (vanilla JS)
desktop/            Tauri 2 shell (NOT a Python package; local-spawn or EVI_REMOTE_URL)
tests/              pytest
docs/               deeper guides
scripts/            install + dev helpers

Configuration

Per-user config lives in ~/.evi/. Highlights:

~/.evi/
  config.toml         primary settings — backend, tools, auto-approve
  profiles/*.toml     overlay profiles for per-machine config
  memory/*.md         long-term memory; `.attic/` holds soft-deleted entries
  skills/<name>/      installed skill packets (SKILL.md + assets)
  commands/<name>.md  user-defined slash command templates
  scheduled/*.json    saved scheduled prompts
  hooks.toml          before/after_tool_call hooks
  mcp.json            MCP server list
  transcripts/        per-session JSONL (input to dreaming)
  logs/               run logs (dreams, scheduled tasks)

See docs/configuration.md for the full reference, the feature catalog for what every feature does + how to use it, and surface parity for the CLI ↔ Web ↔ Desktop map.

Optional dependency groups

pip install -e '.[web]'        # FastAPI + uvicorn for `evi web`
pip install -e '.[mcp]'        # Model Context Protocol client
pip install -e '.[scheduler]'  # APScheduler for cron-style tasks
pip install -e '.[downloads]'  # huggingface_hub for `evi models pull hf:...`
pip install -e '.[web-tools]'  # DuckDuckGo search + BeautifulSoup
pip install -e '.[stt]'        # faster-whisper + sounddevice
pip install -e '.[computer]'   # pyautogui for mouse/keyboard control
pip install -e '.[dev]'        # pytest + ruff

Or all at once:

pip install -e '.[dev,web,mcp,scheduler,downloads,web-tools,stt,computer]'

Development

pip install -e '.[dev]'
pytest -q              # ~1,300+ unit tests (E2E are opt-in: -m e2e)
ruff check evi apps    # style + bug-pattern lint

See docs/development.md for architecture notes, and docs/self-build.md for developing/building eVi with eVi (the EVI.md project context + the one-command scripts/build-desktop build).

Safety posture

  • Default tool toggles lean conservative: shell, subagent, web, voice, computer, gmail, outlook, image, and mcp are all OFF until you flip them in config.toml.
  • auto.auto_approve lists categories that run without prompting. The defaults are fs, code, memory, skills, image. computer is never in this list — every mouse click / keystroke prompts.
  • Hook vetoes (~/.evi/hooks.toml) can block any tool by glob match.
  • Soft-delete memory sends "forgotten" entries to ~/.evi/memory/.attic/ so the dreaming engine can't permanently lose anything.

Code signing

See the Code signing policy for how eVi's desktop installers are signed, who approves releases, and how to verify a download.

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

License

MIT - see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

evi_assistant-1.0.49.tar.gz (728.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

evi_assistant-1.0.49-py3-none-any.whl (595.5 kB view details)

Uploaded Python 3

File details

Details for the file evi_assistant-1.0.49.tar.gz.

File metadata

  • Download URL: evi_assistant-1.0.49.tar.gz
  • Upload date:
  • Size: 728.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evi_assistant-1.0.49.tar.gz
Algorithm Hash digest
SHA256 2efb98f33ea37fca8d9ee8ab379646bf0d4e41e384a26b5ed620fe1f989a1146
MD5 6984e2c4f6c9b3139bfd5f22f9c8d124
BLAKE2b-256 0a2d47043abe76c8beb62d4bbdbd56078d8abf3d493a67bbe5a71ecd48301a75

See more details on using hashes here.

Provenance

The following attestation bundles were made for evi_assistant-1.0.49.tar.gz:

Publisher: release.yml on evi-assistant/evi-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file evi_assistant-1.0.49-py3-none-any.whl.

File metadata

  • Download URL: evi_assistant-1.0.49-py3-none-any.whl
  • Upload date:
  • Size: 595.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for evi_assistant-1.0.49-py3-none-any.whl
Algorithm Hash digest
SHA256 56fcff5d8cefb7c3fbcd649082753d70960481d4e5fa02f7e9d1b30f40af99fc
MD5 7333a4635aafeec7706c787d42efb2b1
BLAKE2b-256 222d12c5e3ff34a7007ca2102f2aae89405c2b371d0ca4f59f216fd8a3f08359

See more details on using hashes here.

Provenance

The following attestation bundles were made for evi_assistant-1.0.49-py3-none-any.whl:

Publisher: release.yml on evi-assistant/evi-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.0.51

2 files

1.0.50

2 files

This release

1.0.49 This release

2 files

1.0.48

2 files

1.0.47

2 files

1.0.46

2 files

1.0.45

2 files

1.0.44

2 files

1.0.43

2 files

1.0.42

2 files

1.0.41

2 files

1.0.40

2 files

1.0.39

2 files

1.0.38

2 files

1.0.37

2 files

1.0.36

2 files

1.0.35

2 files

1.0.34

2 files

1.0.33

2 files

1.0.32

2 files

1.0.31

2 files

1.0.30

2 files

1.0.29

2 files

1.0.28

2 files

1.0.27

2 files

1.0.26

2 files

1.0.25

2 files

1.0.24

2 files

1.0.23

2 files

1.0.22

2 files

1.0.21

2 files

1.0.20

2 files

1.0.19

2 files

1.0.18

2 files

1.0.17

2 files

1.0.16

2 files

1.0.15

2 files

1.0.14

2 files

1.0.13

2 files

1.0.12

2 files

1.0.11

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.40.0

2 files

0.39.0

2 files

0.38.0

2 files

0.37.0

2 files

0.36.1

2 files

0.36.0

2 files

0.35.0

2 files

0.34.1

2 files

0.34.0

2 files

0.33.0

2 files

0.32.0

2 files

0.30.0

2 files

0.29.0

2 files

0.28.0

2 files

0.27.0

2 files

0.26.0

2 files

0.25.0

2 files

0.24.3

2 files

0.24.2

2 files

0.24.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page