// PROJECT · MY OWN AI ASSISTANT
Jarvis

Voice in, voice out, and 222 things he can actually do.

JARVIS is a personal AI assistant that runs on my own Windows PC, with a voice and a live HUD in the browser. You talk to him and he talks back, and he uses real tools to get things done: open apps, read the screen, remember things, guard the machine and help run a Discord server.

Runs on
A Windows PC, locally
Talk
Wake word, voice or chat
Built
60 modules, about 26,000 lines
Thinks with
A model per job, picked by testing
222tools68 always on, the rest in ten topic groups
60Python modulesone job each, from vision to Discord
26klines of Pythonthe whole thing, backups excluded
1.9saverage replywhen only the tools a turn needs are sent (2.9 s with all of them)
Capabilities

What he can do.

He isn't a chat window with a search box bolted on. He's got real hands: the model picks the tool it needs, so you never have to know which feature a request belongs to before you ask.

Voice

He listens and talks back

Say "Jarvis" or press the spacebar to wake him. For about 15 seconds after he speaks you can just carry on, no need to say his name. Custom wake words, a whisper mode that switches on between 22:00 and 07:00, and six moods: normal, serious, funny, hype, calm and sarcastic.

PC control

He runs the computer

Opens apps, folders and sites, sets volume, brightness and media, takes screenshots, locks or sleeps the PC, moves the mouse and types. Say "stop", press Esc or fling the mouse into the top-left corner and he stops at once.

Screen

He can see the screen

He can look at what's on screen, explain an error, translate a window, or watch for something to happen and tell you the moment it does. Anything he reads on screen is treated as data, never as instructions.

Memory

He remembers

A vector-database memory is searched and injected before every reply. He files useful things himself, corrections most of all, and a Brain panel shows everything he knows as a particle map.

Camera

He watches the room

Object scanner, presence and guard mode, face unlock, and a sentry mode that raises intruder alerts.

Security

He guards the PC

Watches every process that starts for malware and RAT behaviour. High-confidence threats are killed on sight and reported to the HUD, Discord and email. Works alongside Windows Defender and keeps an encrypted vault.

Discord

He helps run a server

A ticket assistant, scam and phishing watch, a raid mode that never kicks or bans, native polls, live stat channels, and announcements he drafts and I approve.

Minecraft

He plays and he codes

Joins a server and acts as a player, reads game stats, and carries a reference library for Paper and Bukkit plugins, Mineflayer bots, Fabric and datapacks.

Planner

He keeps me organised

Reminders, timers, alarms, calendar, email triage, a daily briefing, hourly news, notes in Obsidian, and a study mode with flashcards, quizzes and a whiteboard.

Phone

He follows me out

Talk to him over a Discord DM, through a secure tunnel to a phone-friendly page, or have him ring the phone.

Plugins

He can learn skills

Drop a Python file into a folder to add a skill. He can list and reload them, but he can never approve one. Only the owner can.

ULTRON

He has a rival

A second, separate AI with its own memory, a red HUD and a deeper voice. He can only talk, search and keep notes, with no control over the machine. A face-off mode has the two of them debate.

How it works

One conversation, a lot of machinery.

The screen is the part you see. Behind it, a router decides which tools and which model each turn needs.

In the browserThe HUDParticle orb, live panels, the wake word, and speech in and out.
On the PCA Python serverOne app of about 6,300 lines, talking to the HUD over Socket.IO.
Per turnThe routers68 core tools plus ten topic groups, and a model chosen for the kind of job.
Doing222 toolsPC, screen, memory, Discord, Minecraft, planner and security.
MemoryA vector database is searched before every reply and what it finds is placed in front of the model, so he usually recalls things without being asked.
Decisions

Why he works the way he does.

Most of the interesting choices weren't about what he can do. They were about what he's allowed to do, and how fast he answers.

Send the model only the tools a turn needs

Every request used to carry all the tool schemas: roughly 13,000 tokens of JSON the model had to read before it could write its first word. Now 68 core tools are always offered and ten topic groups switch on from what's being talked about.

Measured against the live provider, a trimmed set answered in about 1.9 seconds against 2.9 for the full one. If the router guesses wrong, the model asks for the group by name and gets it on its very next step, so a miss costs one extra step and never a dead feature. The tests fail if any tool isn't reachable.

The right model for each kind of job

One model for everything means every job fights over the same rate limit. So each kind of job gets an ordered list of candidates, chosen by testing and not by reputation: a ticket-reply model that scored 20 out of 20 on real ticket scenarios at 1.3 seconds on average, and a vision model that passed all three picture tests.

A route can only add an option and never remove a working one. A model that keeps failing is skipped for a few minutes, so a dead model costs one slow call, not one per message.

He asks before he changes himself

He can read, search and reason about his own source freely. But he never writes a change to it unless I approve that exact edit, in a dialog that shows it. He isn't allowed to route around it with a shell either.

What's on the screen is data, never instructions

He only starts operating the screen when I clearly ask him to do something, never because text on a web page, email or document suggested it. Password managers are refused. He won't touch games either, because injected input can get an account banned by anti-cheat. And I can stop him instantly: say stop, press Esc, or fling the mouse into the corner.

When it's risky, flag it and don't act

The scam watch alerts me and only deletes when it's sure, and never touches staff posts. The alt-account watch does nothing except message me. Raid mode takes one approval and pauses invites and slows channels, but never kicks or bans.

A hard limit on what he can spend

Every paid model call goes through a spending limit, and a usage report shows tokens, estimated cost, failures and rate limits, so a runaway loop can't turn into a bill.

Some things only the owner can do

He can list and reload plugins but can never approve one. His rival, ULTRON, has no control over the machine at all: he can talk, search and keep his own notes.

Starter Kit

The lighter build.

There's also a trimmed version built for conversation: the full personality, the holographic interface, the standby screen, and voice in and out. It runs on an ordinary PC, no graphics card needed.

Bring your own API key

On first run you pick a provider and paste its API key. You only pay that provider, for what you use, and the key stays on your PC. Haiku and GPT-4o mini are the cheapest places to start.

  • Anthropic Claude. Haiku, Sonnet or Opus.
  • OpenAI. GPT-4o mini, GPT-4o, GPT-4.1 and others.
  • Anything OpenAI-compatible. OpenRouter, Groq, Together, or a local model through Ollama or LM Studio.

What it needs, and leaves out

  • Needs a Windows PC, Chrome or Edge for the microphone, and an API key from the provider you picked.
  • Leaves out controlling the PC, browsing the web and remembering past sessions. Those live in the bigger build.
  • Talk to it by saying "Jarvis", pressing the spacebar, or pressing C to type.
Want an assistant built around you?Everything here started as a thing I wanted and nothing off the shelf did it.
Tell me what you want