INTERACTIVE TUTORIAL · jarvise -tutorial

How JARVIS works — end to end

Voice in, reasoning in the middle, tools on demand, voice out. A pure-CLI AI assistant with 9 features and 19 tools.

pip install jarvise

01 Install

Python 3.11+ required. Local LLMs need Ollama; cloud LLMs need only an API key (Groq free tier works).

pip install jarvise
pip install "jarvise[all]" # voice + google + microsoft + browser
pip install -e . # from source (development)
Your API keys and memory live in .env and ./data/ — nothing leaves your machine unless you choose a cloud LLM.

02 First three commands

1

jarvise -tutorial

Opens this guide in your browser — the full flow, all commands, every feature.

2

jarvise --way

Interactive cloud setup: pick Groq / OpenRouter / Google, paste key, pick model.

3

jarvise

Everyday use: auto-detects your best local model, starts voice + CLI together.

jarvise -tutorial
jarvise --way
jarvise --model
jarvise --ollama3.2 -run # pull model if needed, then run
jarvise --way --text-only # no mic / speaker

03 Command reference

Launch flags

CommandWhat it does
jarvise -tutorialOpens this interactive guide in the browser
jarvise --wayPick cloud provider (Groq / OpenRouter / Google) interactively
jarvise --modelAuto-detect the best local Ollama model for your hardware
jarvise --<name> -runPull <name> if missing, then run it locally
jarvise --text-onlySkip the voice pipeline — keyboard only
jarvise --verboseDebug logs: STT, TTS, LLM timing, tool calls
jarvise --disable-routerBypass fast-path router, send everything to the LLM
jarvisAlias of jarvise (same entry point)

In-session shortcuts (type at the prompt)

TypeAction
suggestShow proactive suggestions learned from your patterns
triageEmail triage — urgent / important / promotional buckets
conflictsDetect calendar conflicts
suggest timesMeeting slots that avoid your focus blocks (9–12)
exit / quitShutdown JARVIS

04 System flow — what happens to your words

Every input, whether spoken or typed, walks the same pipeline. Simple commands skip the LLM entirely via the router.

Input
Two doors: voice — hold Space, speak, release · text — type at You: prompt
Voice pipeline (voice only)
Recorder 16kHz → VAD filters silence/noise → 1.0s silence timeout → Faster-Whisper STT → text + confidence. Say "stop" to interrupt TTS.
Command router
Fast path: exact / fuzzy match + learned preferences → runs a tool without the LLM. "what time is it" answers in milliseconds. Everything else → ReAct agent.
Context assembly
PromptBuilder = system prompt + RAG memory context (ChromaDB similarity search, skipped for short queries) + conversation history + tool schema.
LLM reasoning (ReAct loop, max 10 iterations)
Provider: Groq / OpenRouter / Google (cloud) or Ollama (local). Model responds Thought → Action or a final answer. Streaming — TTS starts on the first sentence.
No action → final answer
Cleaned of Thought/Action lines, returned straight to you.
Action → ToolRegistry
Parses Action: tool: {args}, checks risk tier, executes, feeds Observation back to the LLM.
Response out
Text at prompt + Kokoro TTS through speakers (streaming).
Side effects saved
Conversation → ChromaDB + MEMORY.md · interaction → ProactiveEngine · audit → JSONL.

05 Voice interaction

FEATURE 1

Push-to-talk

Hold Space to record. Release → VAD confirmed speech → 1.0s silence window → Whisper transcribes → JARVIS answers out loud. Hardware-aware model (tiny/base/small/medium) picked from your VRAM.

LOW LATENCY

Streaming + instant replies

TTS speaks the first sentence as soon as the LLM streams it. Greetings like "hello" / "thanks" hit a quick-response table — zero LLM calls. Short queries skip RAG.

SPACE
hold to talk — say "stop" anytime to cut off speech

06 Human-in-the-loop safety

Every action is classified. You always approve the risky ones.

GREEN Auto-execute
Read-only, reversible: search, read, summarize, get_time, recall. Logged to audit trail.
YELLOW Confirm
Writes / sends / deletes: filesystem writes, email draft, calendar events. CLI asks Confirm? [y/N] with a clear summary. 5-minute undo window.
RED Explicit approval
Irreversible: execute_code, financial, legal. Blocked until you approve; every decision appended to data/audit.jsonl.
The LLM prompt also requires it to repeat back what it understood before any write/send action — “I understand you want me to X. Is that correct?”

07 Memory & RAG

VECTOR

ChromaDB

Conversations embedded with MiniLM, similarity-searched each turn and injected into the prompt as context.

FACTS

MEMORY.md

Human-editable file of distilled facts. Ask JARVIS to “remember…” — it lands here.

LEARNING

Preferences

Learned command→tool mappings improve router accuracy over time. forget_stale prunes old memories.

08 All 9 features

01 · voice/

Voice pipeline

STT, TTS, push-to-talk, VAD, interrupt, hardware-aware models.

02 · brain/hitl.py

HITL engine

3-tier risk, confirmations, undo tracker, JSONL audit log.

03 · memory/

RAG memory

ChromaDB vectors, MEMORY.md, preferences, forgetting.

04 · brain/proactive.py

Proactive suggestions

Bigram + tool-pattern learning → subtle follow-up tips after each reply.

05 · brain/calendar_email.py

Calendar + email

Triage (urgent/promo), conflict detection, meeting slots, draft queue.

06 · brain/research.py

Browser automation

15 actions: navigate, click, fill, screenshot, tabs + multi-step research with citations.

07 · brain/sandbox.py

Code sandbox

Python/shell with blocked imports, diff preview before write, execution history.

08 · brain/multi_agent.py

Multi-agent

Researcher/coder/reviewer/planner roles, parallel or pipeline, token budgets.

09 · brain/planner.py

Task planner

Goal → dependency graph, statuses, auto-unblock, replan, persisted plans.

09 All 19 tools

ToolRiskWhat it does
browserGREENNavigate, extract, click, fill, screenshot, tabs
researchGREENMulti-step search → extract → compiled answer with citations
web_searchGREENDuckDuckGo search
filesystemYELLOWRead / write / delete files (write+delete confirmed)
execute_codeREDSandboxed python/shell/pip, diff preview, history
google_calendarYELLOWList/create/update Google Calendar events
google_emailYELLOWGmail read and send
outlookYELLOWMicrosoft Outlook / Exchange
system_monitorGREENCPU, RAM, GPU live stats
get_time / get_dateGREENCurrent time and date (router fast-path)
pwdGREENCurrent working directory
remember / recallGREENSave and semantic-search memories
list_memories / forgetGREENList or delete stored memories
calendar_emailYELLOWUnified triage, conflicts, meeting slots, drafts
multi_agentYELLOWSpawn sub-agents for parallel work
plannerGREENCreate/track/replan task plans

10 Troubleshooting

ProblemFix
Voice pipeline failed at startupRun jarvise --way --text-only, or install voice extras: pip install "jarvise[voice]"
Ollama not respondingollama serve then ollama list
Groq API errorRe-check key: jarvise --way re-prompts and rewrites .env
Responses feel slowUse --way with Groq (fastest). Greetings are instant; long queries skip RAG
No speaker outputCheck data/kokoro_models/ has kokoro-v1.0.int8.onnx + voices-v1.0.bin
Windows console encoding errorsRun inside a UTF-8 terminal, or use --text-only
Want full logsjarvise --way --verbose