# Build your own JARVIS with 5 free tools: setup guide

> Source: <https://gist.github.com/Syedmudassir1604/512684147667ecd5e6cc9843e4277a48>
> Published: 2026-10-30 14:50:42+00:00

Commands checked on the official pages and READMEs on 30 Oct 2026. Star counts are from 29 Oct 2026.

**What you're building:** a local AI assistant that has a brain (Ollama + Qwen3), a chat screen (Open WebUI), ears (faster-whisper), a voice (kokoro-onnx), skills (goose) and memory (Obsidian notes).

**Honest caveat:** these are separate tools. You install them and wire them together yourself; none of this works as one JARVIS out of the box. Speed depends on your hardware, so start with a small model.

Ollama: [https://github.com/ollama/ollama](https://github.com/ollama/ollama) · MIT · 185K★
Qwen3: [https://ollama.com/library/qwen3](https://ollama.com/library/qwen3) · Apache-2.0

macOS / Linux:

```
curl -fsSL https://ollama.com/install.sh | sh
```

Windows (PowerShell):

```
irm https://ollama.com/install.ps1 | iex
```

Start with a small model:

```
ollama run qwen3:4b
```

- Ollama's local API runs at `http://localhost:11434` .
- Skip models tagged `:cloud` , because they don't run on your machine.

[https://github.com/open-webui/open-webui](https://github.com/open-webui/open-webui) · Open WebUI License (BSD-3-style with a branding clause; free and self-hosted) · 157K★

You need **Python 3.12**.

```
pip install open-webui
open-webui serve
```

- Open [http://localhost:8080](http://localhost:8080) .
- On first run you create a local admin account. It stays on your machine; there is no cloud signup.
- With Ollama running, choose `qwen3:4b` in the model picker. To use Ollama on another machine, the README shows the`OLLAMA_BASE_URL` setting.

[https://github.com/SYSTRAN/faster-whisper](https://github.com/SYSTRAN/faster-whisper) · MIT · 26.3K★ · needs Python 3.9+

```
pip install faster-whisper
python
from faster_whisper import WhisperModel
model = WhisperModel("small", device="cpu", compute_type="int8")
segments, info = model.transcribe("audio.mp3", beam_size=5)
for s in segments: print(s.text)
```

- It runs on CPU. On an NVIDIA GPU it needs CUDA 12 and cuDNN 9.

[https://github.com/thewh1teagle/kokoro-onnx](https://github.com/thewh1teagle/kokoro-onnx) · MIT · 2.8K★ · the Kokoro-82M model is Apache-2.0

```
pip install -U kokoro-onnx soundfile
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.1/kokoro-v1.0.onnx
wget https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.1/voices-v1.0.bin
python
import soundfile as sf
from kokoro_onnx import Kokoro
kokoro = Kokoro("kokoro-v1.0.onnx", "voices-v1.0.bin")
samples, sr = kokoro.create("Hello, I am your assistant.", voice="af_sarah", speed=1.0, lang="en-us")
sf.write("audio.wav", samples, sr)
```

[https://github.com/aaif-goose/goose](https://github.com/aaif-goose/goose) · Apache-2.0 · 55.9K★

```
curl -fsSL https://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
goose configure
```

- There is also a desktop app: [https://goose-docs.ai/docs/getting-started/installation](https://goose-docs.ai/docs/getting-started/installation)
- In `goose configure` , pick**Ollama** as the provider. Your local models appear automatically, so no API key is needed. Cloud providers do need keys.
- goose adds skills through MCP extensions.

[https://obsidian.md](https://obsidian.md) · free for all purposes, no sign-up needed · **not open source**

- Download it from obsidian.md and create a vault (a folder).
- Your notes are stored locally as plain text Markdown files, so any tool that reads files can use them.
- Sync and Publish are paid add-ons and you don't need them.

- **Open WebUI ↔ Ollama:** verified (Open WebUI README). Your Ollama models show up in its chat.
- **goose ↔ Ollama:** verified (goose provider docs).
- **Open WebUI voice (no code):** its audio docs (docs.openwebui.com/troubleshooting/audio) say speech-to-text uses a built-in local Whisper when the engine is left empty, and they describe its compute settings as faster-whisper's. So you can talk to it in the browser. In your own Audio settings you can also pick "Kokoro.js (Browser)" for a local in-browser voice. That is Kokoro running in the browser, not the kokoro-onnx package from step 4, which has no verified link to Open WebUI.
- **faster-whisper and kokoro-onnx ↔ goose:** not verified. You'd write a small script that sends the transcribed text in and speaks the reply.
- **Obsidian ↔ goose or Open WebUI:** not verified as a built-in link. The notes are plain markdown files, so point your tools at the vault folder.
