MCPcopy Index your code
hub / github.com/disler/always-on-ai-assistant

github.com/disler/always-on-ai-assistant @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
109 symbols 294 edges 19 files 86 documented · 79%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

"Always-On" Deepseek AI Assistant

A pattern for an always on AI Assistant powered by Deepseek-V3, RealtimeSTT, and Typer for engineering

Checkout the demo where we walk through using this always-on-ai-assistant.

ada-deepseek-v3.png

Setup

  • cp .env.sample .env
  • Update with your keys DEEPSEEK_API_KEY and ELEVEN_API_KEY
  • uv sync
  • (optional) install python 3.11 (uv python install 3.11)

Commands

Base Assistant Chat Interface

See main_base_assistant.py for more details. Start a conversational chat session with the base assistant:

uv run python main_base_assistant.py chat

Typer Assistant Conversational Commands

See main_typer_assistant.py, modules/typer_agent.py, and commands/template.py for more details.

  • --typer-file: file containing typer commands
  • --scratchpad: active memory for you and your assistant
  • --mode: determines what the assistant does with the command: ('default', 'execute', 'execute-no-scratch').

  • Awaken the assistant

uv run python main_typer_assistant.py awaken --typer-file commands/template.py --scratchpad scratchpad.md --mode execute
  1. Speak to the assistant Try this: "Hello! Ada, ping the server wait for a response" (be sure to pronounce 'ada' clearly)

  2. See the command in the scratchpad Open scratchpad.md to see the command that was generated.

Assistant Architecture

See assistant_config.yml for more details.

Typer Assistant

See assistant_config.yml for more details. - 🧠 Brain: Deepseek V3 - 📝 Job (Prompt(s)): prompts/typer-commands.xml - 💻 Active Memory (Dynamic Variables): scratchpad.txt - 👂 Ears (STT): RealtimeSTT - 🎤 Mouth (TTS): ElevenLabs

Base Assistant

See assistant_config.yml for more details. - 🧠 Brain: ollama:phi4 - 📝 Job (Prompt(s)): None - 💻 Active Memory (Dynamic Variables): none - 👂 Ears (STT): RealtimeSTT - 🎤 Mouth (TTS): local

Resources

  • LOCAL SPEECH TO TEXT: https://github.com/KoljaB/RealtimeSTT
  • faster whisper (support for RealtimeSTT) https://github.com/SYSTRAN/faster-whisper
  • whisper https://github.com/openai/whisper
  • examples https://github.com/KoljaB/RealtimeSTT/blob/master/tests/realtimestt_speechendpoint_binary_classified.py
  • elevenlabs voice models: https://elevenlabs.io/docs/developer-guides/models#older-models

Core symbols most depended-on inside this repo

get_connection
called by 10
commands/template.py
get_config
called by 9
modules/assistant_config.py
execute
called by 5
modules/execute_python.py
think_speak
called by 4
modules/typer_agent.py
prefix_prompt
called by 3
modules/deepseek.py
execute_uv_python
called by 3
modules/execute_python.py
process_text
called by 2
modules/typer_agent.py
speak
called by 2
modules/typer_agent.py

Shape

Function 94
Method 11
Class 4

Languages

Python100%

Modules by API surface

commands/template_empty.py30 symbols
commands/template.py26 symbols
modules/utils.py12 symbols
modules/typer_agent.py8 symbols
modules/deepseek.py6 symbols
tests/execute_python_test.py5 symbols
tests/deepseek_test.py5 symbols
modules/base_assistant.py4 symbols
main_typer_assistant.py3 symbols
main_base_assistant.py3 symbols
modules/execute_python.py2 symbols
modules/assistant_config.py2 symbols

For agents

$ claude mcp add always-on-ai-assistant \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact