JARVIS eye

Subject 01 · ID JV-56A · Rev 1.0.0

JARVIS

Local Voice Agent for Windows

JARVIS is a technological experiment exploring the possibility of creating a personal artificial intelligence system using accessible technology. Not an assistant to consume — an idea to look inside of.

The question

JARVIS is not only an AI assistant. It is an exploration of the relationship between humans and technology.

Origin

JARVIS was not born as a commercial product. It was born from a question: can a personal artificial intelligence system emerge from an individual creator using available technology?

Constraint

It did not begin with a theoretical architecture. It began with a restriction: a voice assistant that understands domestic commands without the voice ever leaving the house. Everything else was derived from there.

Meaning

A practical exploration of technology, creativity and human–machine interaction. What happens when a person decides to build a personal artificial intelligence system?

“Promethean shame consists of being ashamed of having been born and not manufactured.”
Günther Anders (1902–1992)

System architecture

The inside of a system built by one person

JARVIS listens, understands by intention — not by exact phrase — and acts: it schedules reminders, administers the machine, opens what it is asked for, reports. All of it without a single byte of audio leaving the computer, unless the user decides otherwise for one specific integration. Its interface is deliberately minimal: a circular eye that changes colour with the internal state. No chat screen, no history to review.

Voice in

microphone capture

Voice out

synthesised speech

Local processing

on the machine

No telemetry

no backend receives data

Fig. 01 — Command processing flow

MICROPHONE

Audio is captured from the default Windows input device. Nothing is streamed anywhere: capture, decision and presentation are three independent execution domains that talk over explicit, bounded channels and never share implicit state.

Fig. 02 — Finite state cycle

SLEEPING

idle — Dim ring, no pulse

LISTENING WAKE WORD

standby — Dim ring, no pulse

WAITING COMMAND

listening — Steady ring, medium brightness

THINKING

processing — Pulsing core

SPEAKING

responding — Core synced to the audio

End of audio → back to waiting for the wake word. Command window: 8 s after activation before returning to rest.

Command domains — 10 independent modules

Domain Modules Real example
Routines 3 Sequences saved under one name
Reminders / alarms 4 Fixed time or relative delay
System 2 Shutdown with safety delay
Communication 1 Video calls
Resources / navigation 2 Programs, folders, sites
Information 5 Date, weather, news, calculation

Acceptance threshold

C(u) = P(ŵ|u) / Σ P(w|u) ≥ τ = 0.80

Minimum recognition confidence to accept a command without asking for a repetition.

I(t) = I₀(1 + α·sin(2πft)), f = 0.6 Hz

Core brightness oscillates while the system processes — it never pretends to listen when it is not.

Fig. 04 — Voice volume control

Three spoken steps: up, down, mute

The volume of the synthesised voice is part of the command engine, not of a settings window. JARVIS answers out loud, so the level at which it answers has to be reachable by voice at any moment — while music is playing, during a call, or at night with the house asleep. Three intentions cover it: raise, lower, silence. They are routed like any other command, they are confirmed the same way, and the chosen level is written to disk so the next session starts exactly where the last one ended.

VOLUME UP

“Jarvis, volume up”

Raises the speech output level one step. Each step is a fixed increment, so the same phrase repeated twice moves twice — never to an unpredictable value.

VOLUME DOWN

“Jarvis, turn the volume down”

Lowers the speech output level by the same fixed step. At the lowest step the voice stays audible: silence is reached only by muting, never by accident.

MUTE

“Jarvis, mute” / “Jarvis, unmute”

Silences the spoken answer while the system keeps listening and keeps working. The eye still reports state, so a muted JARVIS is visibly awake, not switched off.

Scope

Only the voice of JARVIS. The master volume of Windows and every other application are left untouched.

Persistence

The level and the mute flag are stored locally and restored on the next start. Nothing about it leaves the machine.

While muted

Recognition, routines and reminders keep running. Anything that would have been said is simply not spoken.

Fig. 03 — Building routines

Sequences written in plain text

A routine is an ordered list of phrases — the same phrases that would be spoken out loud — saved under one number. They live in config/routines.json, next to contacts.json: a plain-text file, opened with Notepad, edited, saved. Nothing has to be restarted, because the file is read again every single time a routine is activated. There is no separate list of “valid commands for routines”: routines go through the same command-processing engine as the voice, so anything JARVIS already understands spoken can be used as a step.

Where

config/routines.json

Reload

read at every activation

Activation

“Jarvis, activate routine 1”

The format

{
  "1": {
    "time": "08:00",
    "steps": ["tell me the news"]
  },
  "2": {
    "time": "12:00",
    "steps": ["tell me the weather", "tell me the news"]
  },
  "3": {
    "steps": ["call Mom"]
  }
}

The key — "1", "2", "3" — is the routine number: always a number, always inside quotation marks. The number can be spoken as a digit or as a word, because recognition may transcribe it either way.

Example steps

Step Action
"tell me the news" Reads the configured news
"tell me the weather" Provides the weather forecast
"what time is it" Tells the current time
"call Mom" / "call Dad" Starts a call through Meet
"send John a message saying I’ll be late" Sends a WhatsApp message
"open Word" Opens any resource declared in resources.json

Steps run in order, one after another, and JARVIS reads all the responses together at the end.

Creating or editing by voice

“Jarvis, create routine 1 at 8 in the morning with tell me the weather.” Same engine, same file — the routine is written to disk as if it had been typed.

Time format

Optional. 24-hour "HH:MM". With it, the routine fires automatically every day at that time; without it, the routine exists but only runs when it is asked for.

Spoken time

"at 8" and "at 8 in the morning" are read the same way. "Noon" is always 12:00.

Multiple steps

Separate them with "and" or with commas: "with tell me the weather and the news".

Overwriting

If the routine number already exists, it is updated — schedule and steps — instead of being duplicated. Creating and editing are the same action.

Steps starting with "what"

A step such as "what time is it" may be parsed incorrectly when dictated. For those, editing the file by hand is the safer path.

For several routines at once — different schedules, different commands — editing the file directly is faster and more reliable than dictating each one. Voice creation is for quick, isolated changes.

The eye

One single shape

The whole visual interaction surface is reduced to a circle. Not a mascot, not a character — a state-reading instrument, as simple as it could be sustained. The exploded view of the optical unit (plan JV-OPT-003, scale 1:1) describes three concentric parts: outer shell in mirror-finish polycarbonate (60 mm), smoked translucent diffuser lens (45 mm) and the LED emitter core, red channel (12 mm).

Principles

  • OFFLINE-FIRST
  • DETERMINISM
  • PRIVACY BY DEFAULT
  • ONE VOICE, NO MEMORY BETWEEN TURNS

Numeric normalisation: N = Σ dₖ·10ᵏ — every number spoken in words is resolved to its positional value before reaching the router.

Advantages over other designs

Commercial assistants solve a different problem: they are made to scale to millions of users and improve with aggregated data. JARVIS does not compete on that ground — and that is where its real advantage lies.

Dimension Commercial assistant JARVIS
Voice processing Cloud, by default 100% local, by default
Understanding General language model Auditable deterministic router
Behaviour May vary between versions Identical until the author changes it
Usage data Collected Does not exist
Extensibility Enabled by the vendor The code belongs to the author

The cost of this choice

Being honest requires saying what is lost too. JARVIS does not understand truly open language — if an order does not match a known pattern, it does not understand it, and it says so. What is sacrificed in flexibility is recovered in predictability and total control over what the system can and cannot do.

“An assistant that sometimes surprises you for good can also surprise you for bad. I preferred to build one that never surprises.”

Resilience by design

  • If the cloud voice service does not respond, the system falls back automatically to the local voice engine.
  • If a reminder was pending while the machine was off, it is announced as soon as the system boots again.
  • If the configuration file has an error, the system shows exactly what the problem is instead of closing without explanation.
CAPTURE DECISION RESPONSE PERSISTENCE

Reflections on design

There is a question that could not be avoided while building something that listens all the time: who does this work for? The answer that guided every decision was always the same — it works for whoever switched it on, and for nobody else.

No small, offline speech system transcribes human speech perfectly. That fact became an unexpected source of learning: it forced every command to be designed around how people actually speak, not how they should speak. The most useful artificial intelligence is not the most sophisticated one, but the one that best understands the real limits of the situation it lives in.

Growth and evolution

The system was built to grow by adding modules, not by rewriting. Growth by addition: every new capability is added, none replaces the previous one.

Short term

Audio device selector

Today the system always uses the default Windows microphone and speaker.

More accurate recognition model

The current model prioritises speed; a larger option exists today, not enabled by default.

Medium term

Do not disturb mode

The state machine already distinguishes total inactivity from active waiting — the base already exists.

Optional extended understanding layer

An extension point that delegates to a language model whatever does not match a known command.

Technical specifications

Component Technology Function
Application Electron Desktop packaging, interface
Speech recognition Vosk (offline, Spanish) Transcription without connection
Recognition runtime Python Isolated subprocess
Local speech synthesis Piper Offline text-to-speech by default
Cloud synthesis Optional external service Higher quality, own key
Persistence Local JSON file Reminders and routines
Task scheduling In-process scheduler Fires at the exact time
Weather Public keyless service Current weather query
Build Cloud continuous integration Installer without owning Windows

Privacy footprint

Data Does it leave the machine?
Captured audio Never
Transcribed text Never
Personal configuration Never
Weather query Coordinates only, no logging

A technical manual is also a document of intentions. Every row of these tables is a promise as much as a description. This describes a real system, built and refined iteratively by its author — it is not a conceptual proposal.

Subject 01 · ID JV-56A · Rev 1.0.0 · Manual July 2026

Interface skins

The eye is replaceable

The circle is the only surface JARVIS shows, and it belongs to whoever runs it. The appearance of the optical unit is a configurable asset: the user can replace it, so the assistant can look like a machined instrument, a camera body or a bare piece of glass without a single line of the command engine changing. State reading is preserved in every case — the same colours, the same pulse, the same silence when idle.

The eight variants below were designed by the creator of the system and ship with it as the reference set. They are presented as a catalogue, not as a limit: any square image placed in the interface folder becomes a valid skin, and the selection survives restarts.

JARVIS interface design JV-UI-01 — Chrome Shell

JV-UI-01

Chrome Shell

Mirror-finish outer ring, deep red core

JARVIS interface design JV-UI-02 — Quadrant

JV-UI-02

Quadrant

Segmented ring, four reading quadrants

JARVIS interface design JV-UI-03 — Foundry

JV-UI-03

Foundry

Machined plate with honeycomb diffuser

JARVIS interface design JV-UI-04 — Optic

JV-UI-04

Optic

Camera body, horizontal light axis

JARVIS interface design JV-UI-05 — Monolith

JV-UI-05

Monolith

Matte black, single triangular emitter

JARVIS interface design JV-UI-06 — Carapace

JV-UI-06

Carapace

Split shell with exposed red seams

JARVIS interface design JV-UI-07 — Halo

JV-UI-07

Halo

Outer LED crown, brightest state indicator

JARVIS interface design JV-UI-08 — Void

JV-UI-08

Void

Bare glass, no visible housing

How a skin is applied

Where

assets/interface/ — one square file per skin, dropped in like any other document.

Selection

Declared once in the local configuration and read at start. The chosen skin persists between sessions.

Unchanged

Colour states, pulse frequency and geometry of the reading stay identical. Only the housing changes.

Icon set

One mark, twenty readings

Everything outside the running window still needs a face: the installer, the entry pinned to the Windows taskbar, the shortcut on the desktop. That mark is also chosen by the user. The set below was drawn by the creator of the system as the reference identity — a single red core, read at 16 px as clearly as at full size — and any of them can be assigned to the installer, the taskbar entry or the desktop shortcut, independently of each other.

JARVIS application icon — Installer

Installer

Setup and first run

JARVIS application icon — Taskbar

Taskbar

Pinned, always reachable

JARVIS application icon — Shortcut

Shortcut

Desktop launcher

JARVIS application icon — Standby

Standby

Awake, not listening

JARVIS application icon — Listening

Listening

Command window open

JARVIS application icon — Router

Router

Command dispatch

JARVIS application icon — Focus

Focus

Foreground session

JARVIS application icon — Broadcast

Broadcast

Voice output active

JARVIS application icon — Anchor

Anchor

Pinned instance

JARVIS application icon — Aperture

Aperture

Capture in progress

JARVIS application icon — Location

Location

Local-only session

JARVIS application icon — Vision

Vision

Interface preview

JARVIS application icon — Array

Array

Recognition model

JARVIS application icon — Orbit

Orbit

Background service

JARVIS application icon — Target

Target

Routine trigger

JARVIS application icon — Core

Core

System module

JARVIS application icon — Guard

Guard

Privacy state

JARVIS application icon — Notice

Notice

Reminder fired

JARVIS application icon — Cycle

Cycle

Restart / reload

JARVIS application icon — Circuit

Circuit

Developer build

Assignment

Installer

The mark carried by the setup file and by the entry in the list of installed programs.

Taskbar

Read at small size while the system runs; the variants with a heavier outer ring hold up best there.

Shortcut

The desktop launcher, replaceable at any time without reinstalling anything.

Interface modules

Open the system

Module

Identity

The visual identity of the system: one circle, read as state. Opens inside this interface.

Module

Recording

A recorded session of JARVIS answering by voice, no chat screen involved.

Module

Live

A live capture of the system running on a standard Windows machine.

Module

Creator

The person behind the experiment. Opens inside this interface.

Channel open

Leave a local note

Observations, questions or reflections saved only in this browser.

Local channel · no data leaves this page