B/MBertrand MbanwiENGINEER / BUILDER All workLet’s talk
APPLIED AI / PERSONAL AUTOMATIONCASE STUDY / 6 minute read

J.A.R.V.I.S.

FROM WORDS.TO WORK.

An AI assistant becomes useful when it can connect a request to the right tools, keep the person in control, and bring the result back across the interfaces they use.

Personal open-source project · macOS + web · Cloud and local modelsThe 60-second overview
OPEN SOURCE
BUILT IN PUBLIC.
34GitHub stars 14Repository forks Last successful check
2026-09-05 22:54 UTC
JARVIS / GUIDED REPLAY

ONE REQUEST.
FOLLOW THE WORK.

A small task makes the system concrete. Follow a weather lookup from a request to a recorded tool result.

01 / THE REQUEST

“What’s the weather in Dallas?”

A person asks for the weather in Dallas. Voice and chat are entry points into Jarvis’s shared backend.

Inspect this implementation
REQUEST WALKTHROUGH01 / 05

What’s the weather
in Dallas?

Illustrative request · Chat or voice

Illustrated request flow with a real isolated tool recording. This page does not run a model or control your computer. Weather data: Open-Meteo.

Checked against GitHub
Last successful check · 2026-09-05 22:54 UTC78ae0f9Remove temporary public identity diagnostics after verification
Jarvis’s repository screenshot showing a conversation and desktop app lookup
THE PRODUCT / CHAT INTERFACEOriginal repository screenshot
THE SHORT VERSION

WHAT THIS
DEMONSTRATES.

  1. 01

    Python and FastAPI connect a Next.js interface, a Chrome extension, and a native macOS overlay through shared services and WebSockets.

  2. 02

    Model tiers, specialized agents, and a tool registry turn requests into actions. Permission checks and user confirmation are separate parts of execution.

  3. 03

    SQLite-backed memory and jobs, trace IDs, cost controls, and repository checks make the system’s operation inspectable.

01 / CONTEXT

THE PROBLEM.

A chat response is only the beginning of personal automation. Acting on a computer introduces browser state, operating-system access, interrupted tasks, sensitive information, and model costs. Jarvis explores how those concerns fit into one assistant that can be reached through voice, chat, and a desktop interface.

Constraints that shaped the work

  • Keep web, browser-extension, and macOS clients connected to a shared backend.
  • Support cloud inference and a local Ollama option with different setup and performance tradeoffs.
  • Check tool authority independently of a model’s request to execute an action.
  • Make failures and long-running work inspectable through persisted status and traces.
02 / FOLLOW THE SYSTEM

ARCHITECTURE.

Choose a stage to explore its purpose and supporting source.

ARCHITECTURE WALKTHROUGH01 / 06

Receive the request

The web interface communicates with the FastAPI service over REST and WebSockets. Separate WebSocket routes connect chat, browser extension, and desktop overlay clients.

WHAT TO INSPECT

Inspect the chat, extension, and overlay WebSocket handlers and authenticated chat endpoints.

Read the implementation
03 / ENGINEERING JUDGMENT

THE TRADEOFFS.

01

A shared backend for different interfaces

Connect web, extension, and overlay clients through explicit service endpoints and WebSocket channels.

The tradeoffThe interfaces can share execution services, while connection lifecycle and device routing add operational complexity.

Inspect the decision
02

Match model spend to the request

Use multiple inference tiers and check the estimated premium before some deep-tier upgrades.

The tradeoffHeuristic routing makes cost decisions readable, but a tier choice does not guarantee answer quality. Local inference also depends on the host and installed model.

Inspect the decision
03

Keep confirmation outside model authority

Use a server-granted context for confirmed actions, alongside an explicit permission catalog.

The tradeoffInteractive approvals add friction. The separation prevents a model-supplied confirmation flag from being treated as user approval.

Inspect the decision
04

Persist jobs and their failure state

Use SQLite records with status, timestamps, errors, and trace IDs for long-running work.

The tradeoffLocal persistence aids diagnosis and restart handling; storage alone does not guarantee that every external action is safely replayable.

Inspect the decision
04 / WHAT THE WORK SHOWS

OUTCOMES & LIMITS.

A connected product surface

The repository brings together voice, chat, a desktop overlay, browser controls, and tool execution in one personal assistant.

Supporting source

A reproducible tool example

The included recording executes the repository’s weather tool with an explicit Dallas, Texas input and preserves the returned text. It establishes that bounded tool result, not an end-to-end model benchmark.

Supporting source

Checks beyond a UI build

The CI definition includes backend linting, typing, tests, tool contracts, offline evaluations, frontend checks, and browser smoke tests. Current workflow outcomes appear separately above.

Supporting source
THE LESSON

The distinctive work here is connecting interfaces, models, permissions, execution, and persistent state. A useful next evaluation would measure complete tasks—including denied actions and interruptions—against repeatable scenarios, with cost and latency recorded alongside the outcome.

Where the evidence ends

  • This is a personal macOS project. Stars and forks indicate repository interest; they do not establish active users or production adoption.
  • The task walkthrough illustrates request routing and replays a real isolated weather-tool result. It does not connect visitors to the owner’s computer or invoke a language model.
  • The screenshots come from the repository and represent the captured interface. This review does not independently establish voice latency, model accuracy, or a complete security assessment.
05 / CHECK THE WORK

THE SOURCEBOOK.

Reviewed 5 September 2026. These links point to the source revision used for this case study.

Source revision 5784e0c · View current workflow history ↗

KEEP EXPLORING

Ephemeral Azure Platform