Add Discord-native hybrid front-end for Jarvis (bot + bridge)
Some checks failed
Release / semantic-release (push) Successful in 59s
tests / Unit tests (Linux, Python 3.11) (push) Successful in 13m45s
Release / build-linux (push) Failing after 7m47s
Release / build-windows (push) Has been cancelled
Release / build-macos (arm64, macos-latest) (push) Has been cancelled
Release / build-macos (x64, macos-15-intel) (push) Has been cancelled
Release / release-main (push) Has been cancelled
Release / release-develop (push) Has been cancelled
Some checks failed
Release / semantic-release (push) Successful in 59s
tests / Unit tests (Linux, Python 3.11) (push) Successful in 13m45s
Release / build-linux (push) Failing after 7m47s
Release / build-windows (push) Has been cancelled
Release / build-macos (arm64, macos-latest) (push) Has been cancelled
Release / build-macos (x64, macos-15-intel) (push) Has been cancelled
Release / release-main (push) Has been cancelled
Release / release-develop (push) Has been cancelled
Transform isair/jarvis into a Discord-controlled voice assistant running on the Ubuntu VNC desktop, keeping the mature ~39k-line Python brain intact. - bot/ (Node + bun, discord.js): /자비스 slash commands (ephemeral), voice channel join + voice receive/playback, pluggable VNC screen broadcast (selfbot live / noVNC / screenshot) - bridge/ (Python, Flask): wraps jarvis STT + run_reply_engine + Piper TTS behind a thin localhost HTTP API - .env.example, scripts/ (start_bridge/start_bot/dev), README rewrite, docs/language-comparison.md and docs/vnc-xfce-setup.md Language decision: hybrid (Python brain + Node/bun Discord layer) because Discord blocks bot video; native screen broadcast only works via a Node selfbot library.
This commit is contained in:
99
examples/config.json
Normal file
99
examples/config.json
Normal file
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"db_path": "~/.local/share/jarvis/jarvis.db",
|
||||
"sqlite_vss_path": null,
|
||||
"ollama_base_url": "http://127.0.0.1:11434",
|
||||
"ollama_embed_model": "nomic-embed-text",
|
||||
"ollama_chat_model": "gpt-oss:20b",
|
||||
"llm_chat_timeout_sec": 180.0,
|
||||
"llm_tools_timeout_sec": 300.0,
|
||||
"llm_multi_step_timeout_sec": 600.0,
|
||||
"llm_embedding_timeout_sec": 60.0,
|
||||
"llm_profile_select_timeout_sec": 30.0,
|
||||
"active_profiles": [
|
||||
"developer",
|
||||
"business",
|
||||
"life"
|
||||
],
|
||||
"use_stdin": false,
|
||||
"allowlist_bundles": [
|
||||
"com.apple.Terminal",
|
||||
"com.googlecode.iterm2",
|
||||
"com.microsoft.VSCode",
|
||||
"com.jetbrains.intellij"
|
||||
],
|
||||
"tts_enabled": true,
|
||||
"tts_engine": "piper",
|
||||
"tts_voice": null,
|
||||
"tts_rate": 200,
|
||||
"tts_piper_model_path": null,
|
||||
"tts_piper_speaker": null,
|
||||
"tts_piper_length_scale": 1.0,
|
||||
"tts_piper_noise_scale": 0.667,
|
||||
"tts_piper_noise_w": 0.8,
|
||||
"tts_piper_sentence_silence": 0.2,
|
||||
"tts_chatterbox_device": "cuda",
|
||||
"tts_chatterbox_audio_prompt": null,
|
||||
"tts_chatterbox_exaggeration": 0.5,
|
||||
"tts_chatterbox_cfg_weight": 0.5,
|
||||
"voice_device": null,
|
||||
"sample_rate": 16000,
|
||||
"voice_min_energy": 0.02,
|
||||
"voice_block_seconds": 4.0,
|
||||
"voice_collect_seconds": 4.5,
|
||||
"voice_max_collect_seconds": 180.0,
|
||||
"wake_word": "jarvis",
|
||||
"wake_aliases": [
|
||||
"joris",
|
||||
"charis",
|
||||
"jar is",
|
||||
"jaivis",
|
||||
"jervis",
|
||||
"jarvus",
|
||||
"jarviz",
|
||||
"javis",
|
||||
"jairus",
|
||||
"jarryst",
|
||||
"chyrus"
|
||||
],
|
||||
"wake_fuzzy_ratio": 0.78,
|
||||
"whisper_model": "small",
|
||||
"whisper_backend": "auto",
|
||||
"whisper_device": "auto",
|
||||
"whisper_compute_type": "int8",
|
||||
"whisper_vad": true,
|
||||
"whisper_min_confidence": 0.3,
|
||||
"whisper_min_audio_duration": 0.15,
|
||||
"whisper_min_word_length": 1,
|
||||
"vad_enabled": true,
|
||||
"vad_aggressiveness": 2,
|
||||
"vad_frame_ms": 20,
|
||||
"vad_pre_roll_ms": 240,
|
||||
"endpoint_silence_ms": 800,
|
||||
"max_utterance_ms": 12000,
|
||||
"tts_max_utterance_ms": 3000,
|
||||
"tune_enabled": true,
|
||||
"hot_window_enabled": true,
|
||||
"hot_window_seconds": 6.0,
|
||||
"echo_energy_threshold": 2.0,
|
||||
"echo_tolerance": 0.3,
|
||||
"dialogue_memory_timeout": 300.0,
|
||||
"memory_enrichment_max_results": 3,
|
||||
"agentic_max_turns": 8,
|
||||
"stop_commands": [
|
||||
"stop",
|
||||
"quiet",
|
||||
"shush",
|
||||
"silence",
|
||||
"enough",
|
||||
"shut up"
|
||||
],
|
||||
"stop_command_fuzzy_ratio": 0.8,
|
||||
"location_enabled": true,
|
||||
"location_cache_minutes": 60,
|
||||
"location_ip_address": null,
|
||||
"location_auto_detect": true,
|
||||
"web_search_enabled": true,
|
||||
"brave_search_api_key": "",
|
||||
"wikipedia_fallback_enabled": true,
|
||||
"mcps": {}
|
||||
}
|
||||
Reference in New Issue
Block a user