Skip to main content

Yumii — Open-source, locally-runnable AI companion: a desktop voice orb (Live2D avatar mode coming soon).

Project description

Yumii 🌸 — An AI Companion for Your Desktop

Version Python uv FastAPI Tauri License: MIT GitHub stars

Yumii is an open-source AI companion that lives on your desktop — a floating orb you talk to, with real-time voice, six personalities, and a memory of your life together that stays in a file on your machine. Runs on a normal CPU, no GPU needed.

⚠️ Alpha — no API stability promise yet. The voice loop, personalities, persistent memory (recall of any past conversation, self-written facts, session summaries with time sense), and tool-calling behind a human-in-the-loop gate all work end-to-end. The animated Live2D avatar is a planned "coming soon" mode. See CHANGELOG.md and ROADMAP.md.


⚡ Install (one command)

Windows (PowerShell):

iex (irm https://yumii.me/install.ps1)

That's the whole install. It sets up uv, a private Python 3.12, Yumii's backend, and the desktop app — then puts Yumii in your Start Menu. Open her, paste one API key in the ⚙️ dashboard (a free Groq key is plenty, or an Ollama key), and start talking. Her local voice model downloads itself the first time she speaks.

Updating: re-run the same command.

macOS / Linux: the desktop shell is Windows-first for now — curl -fsSL https://yumii.me/install.sh | bash installs the backend for development, and the native shells are on the roadmap.


✨ What Yumii Does

  • 🎙 Listens — Silero VAD + Whisper (local or Groq cloud), with a manual mic mute
  • 🧠 Thinks — Groq, Ollama Cloud, OpenAI, or Anthropic, with a persistent personality
  • 🗣 Speaks — Kokoro (fully local, no API key) or ElevenLabs / CAMB.ai, streamed in real time
  • 🛠 Acts — tools (web search, Gmail/Calendar/Notion via Composio) behind a permission gate
  • 🧠 Remembers — searches every past conversation (local FTS), writes and corrects her own facts, and knows when you last spoke and what happened — all in local SQLite
  • 🟢 Reacts — a floating orb that pulses and shifts colour with the conversation (Live2D avatar mode coming soon)
  • 🔐 Private by architecture — no account, no server, nothing phones home; API keys live in an owner-only local file, memory lives in ~/.yumii/

🛠 Run From Source (developers)

Needs uv, Rust + MSVC C++ Build Tools (Windows); WebView2 ships with Win 10/11.

git clone https://github.com/CodeNeuron58/Yumii.git
cd Yumii
uv sync

cd desktop && npx @tauri-apps/cli dev   # the desktop app — the only way to run Yumii

The shell starts the backend for you (yumii server is the headless launcher it invokes — there is no interactive CLI and no browser UI).

⚠️ Use uv, not pip — dependencies are locked with uv and installed via uv sync.


🤖 Providers

Role Options
Mind (LLM) Groq (free tier) · Ollama Cloud (minimax-m3, 1M context) · OpenAI · Anthropic
Ears (STT) Local Whisper (private, offline) · Groq Whisper (fast, cloud) · Vosk (offline streaming)
Voice (TTS) Kokoro (local, free, recommended) · ElevenLabs · CAMB.ai

Everything is switchable from the in-app ⚙️ dashboard.


🏗 Architecture

flowchart TD
    mic["🎙 Microphone"] --> vad["Silero VAD<br/>speech detection"]
    vad --> stt["Whisper STT<br/>local CPU · or Groq cloud"]
    stt --> agent

    subgraph agent [LangGraph Agent]
        direction TB
        sys["System prompt<br/>personality + episodic context + facts"] --> llm["LLM invoke<br/>Groq · Ollama · OpenAI · Anthropic<br/>tools bound · HITL-gated"]
        llm --> synth["Synthesizer<br/>response + expression"]
    end

    agent <--> mem[("SQLite memory<br/>sessions · facts · transcript+FTS ·<br/>summaries · checkpoints — ~/.yumii")]
    agent --> tts["TTS<br/>Kokoro local · ElevenLabs · CAMB.ai"]
    tts --> ws["WebSocket"]
    ws --> orb["Desktop orb (Tauri)<br/>pulse + emotion colour"]
    orb -.->|coming soon| live2d["Live2D avatar mode"]

📁 Project Structure

src/yumii/
  agent/          # LangGraph state machine, tool-bound LLM, personality manager,
                  # emotion synthesizer, fact extraction + memory review
  api/            # FastAPI server: /health, /ws, REST, /dashboard.html
  audio/          # STT pipeline (Silero VAD + Whisper/Groq/Vosk)
  core/           # settings, auth.json credential store, engine orchestrator,
                  # SQLite memory (facts, transcript+FTS, session summaries)
  tts/            # Kokoro (local ONNX) + ElevenLabs + CAMB.ai streaming
  tools/          # tool registry + policies: web search, recall, memory,
                  # Composio integrations
  assets/         # personality prompts, orb + dashboard pages, Silero model
  cli.py          # bare launcher: `yumii server` (the shell invokes this)

desktop/
  src-tauri/      # Tauri v2 shell: orb window, tray, global hotkey,
                  # backend launcher

Memory lives at ~/.yumii/memory/ (auto-created). API keys at ~/.yumii/auth.json.


🔐 Security

  • ~/.yumii/auth.json — API keys, owner-only permissions, atomic writes (the same storage model Claude Code and opencode use).
  • ~/.yumii/config.json — non-sensitive preferences.
  • No accounts, no telemetry, no server of ours: your data goes only to the LLM/STT/TTS providers you configure — or stays fully on-device with the local options.

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md.

Ideas: new personality prompts, more tools, TTS backends, the Live2D avatar mode, macOS/Linux desktop shells.


📄 License

MIT — see LICENSE.

Project details


Download files

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

Source Distribution

yumii-0.11.0.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

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

yumii-0.11.0-py3-none-any.whl (2.1 MB view details)

Uploaded Python 3

File details

Details for the file yumii-0.11.0.tar.gz.

File metadata

  • Download URL: yumii-0.11.0.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yumii-0.11.0.tar.gz
Algorithm Hash digest
SHA256 b1e8d478ef0c82977d4602d3e253fcccc8c2483692a5e2608ab4e86f52ca07b7
MD5 500ee3ea2d9899494bb8f0406df2b8e5
BLAKE2b-256 9d95b3abf84d31126aac862a92f4371d1b1df73f20ccfc3ebed50fb3d1e47115

See more details on using hashes here.

Provenance

The following attestation bundles were made for yumii-0.11.0.tar.gz:

Publisher: release.yml on CodeNeuron58/Yumii

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

File details

Details for the file yumii-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: yumii-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for yumii-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7e053c1b5bda6d25f1252609eaa25b3455a37c8d1c041da04399d0c056d4fca8
MD5 925695593703eea75dff93a67af9a7bb
BLAKE2b-256 aa264c1ea009fccfa6b39d7fa9cd35ebaf81ce2e190057ea9710502ba6f7a385

See more details on using hashes here.

Provenance

The following attestation bundles were made for yumii-0.11.0-py3-none-any.whl:

Publisher: release.yml on CodeNeuron58/Yumii

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

Supported by

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