JARVIS setup skill

jarvis-setup

A skill helps set up voice JARVIS for Claude Code on a Mac and check microphone access, speech synthesis and permissions

  • 957 ★ on the repository
  • Last commit
Skill

Broad access

Why this level

  • JARVIS bypasses Claude Code permission prompts and can control Mac applications
  • Speech synthesis uses the external Fish Audio service; MCP connections expose selected data
All reasons and checks

ethanplusai/jarvis

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add skills/jarvis-setup

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • JARVIS bypasses Claude Code permission prompts and can control Mac applications
  • Speech synthesis uses the external Fish Audio service; MCP connections expose selected data

This is third-party code. Review the repository files before installing.

What it does

The `jarvis-setup` skill guides an agent through installing and diagnosing JARVIS, a Mac voice interface to Claude Code. It covers specific failures: microphone permission tied to another port, expired CLI login and Accessibility access granted to the wrong app. The guide helps check Claude Code authentication and MCP connections, identifying settings and logs to inspect when a step fails. The skill ships in the source repository and refers to implementation files. The agent uses those during setup and troubleshooting. Application installation and permission grants are separate steps.

Who it is for. Mac owners configuring voice-based JARVIS and troubleshooting microphone and desktop-control permissions.

Good fit when

  • The microphone stops working after the frontend port changes
  • A voice error requires checking the Claude Code login in server logs
  • JARVIS cannot see an MCP server already used by another client
  • You need to identify the macOS application requiring Accessibility access

Not a fit when

  • You need a voice interface for Linux or Windows
  • You cannot use the external Fish Audio speech service
  • You cannot run an agent with interactive permission prompts bypassed

Example request

Read `jarvis-setup` and check the requirements for my Mac. Plan the setup, separating paid speech synthesis and execution without permission prompts. Do not request keys in chat.

Limitations

Setup targets macOS with Python 3.11 or later, Node.js 18 or later, Chrome and signed-in Claude Code 2.1.224 or later. Speech uses Fish Audio with no fallback without FISH_API_KEY; a Claude subscription does not pay for it. JARVIS launches Claude Code with --dangerously-skip-permissions; inspect screen, terminal and service access first. The custom license permits personal non-commercial use; commercial use requires a separate license.

How to disable. Stop the JARVIS backend and frontend and remove the skill from the agent. Revoke unused macOS permissions and service credentials. Inspect data, logs and `connections.json` separately before deletion.

FAQ

Why did microphone access stop working?

Permission is scoped to the full origin, including its port. Check the exact frontend origin in `chrome://settings/content/microphone`; `localhost:5173` permission does not cover `localhost:5174`.

Where do MCP connections go?

Use `<JARVIS_DATA_DIR>/jarvis/connections.json`, defaulting to `./data/jarvis/connections.json`, with an `mcpServers` wrapper. Restart `server.py` afterward. Other clients’ MCP settings are not inherited.

Is an Anthropic API key required?

Not for this mode. JARVIS uses the official Claude Code CLI with your subscription and normal sign-in.

Why does a fresh frontend return HTTP 500?

The documented local proxy expects an HTTPS backend. Check that `cert.pem` and `key.pem` were created as instructed. Never share the private certificate key in chat.

Which app needs Accessibility access?

Grant it to the application launching JARVIS, such as Terminal.app. Another terminal or a moved app instance may not share that grant. The permission enables UI control.

Does filtering eliminate untrusted instructions?

Not fully. It can miss instructions in external text; Claude Code’s permission bypass still applies.

Discussion

No questions or reviews yet.

Skills

A skill and MCP for voiced screen recordings: the agent turns a spoken bug walkthrough into tasks with screenshots and code

SkillBroad access283Repository stars

About a hundred skills for Claude Code: meetings, research, publishing, TDD, Telegram, email and personal analytics

PluginBroad access409Repository stars

Local voice layer for Claude Code and Codex on macOS: when the agent finishes or fails, it says in a sentence or two what happened

CLIExtended access218Repository stars

Claude Code skill that builds an Obsidian wiki from ChatGPT and Claude exports, articles and email, Karpathy style.

SkillExtended access224Repository stars

A skill that builds an anonymized developer profile and a vertical poster from local Claude Code and other CLI history

SkillExtended access175Repository stars

OpenSkills runs Anthropic's official skills in an isolated container on a Mac and serves them over MCP to any agent: Gemini CLI, Qwen CLI, OpenCode

MCP serverExtended access452Repository stars

README in short

The skill checks the actual process environment: `CLAUDE_CONFIG_DIR` can select a different login directory. Detailed authentication failures appear in server logs even when the spoken message is generic.

README badge

Original SKILL.md

---
name: jarvis-setup
description: Use when helping someone install, configure, or debug a fresh clone of JARVIS (this repo) — especially "the mic doesn't work", "JARVIS says his language systems are down", any Firefox/browser question, login/auth failures, or Accessibility permission prompts. Carries facts about this project that were only learned by hitting them live; check it before guessing.
---

# Setting up JARVIS

Everything below was learned the hard way, in a real setup or a real live
session, not guessed. Check a claim against the code cited before repeating
it to a user — if something here stops being true, the citation is exactly
what lets you find out.

## The microphone only works in Google Chrome

This is a hard constraint, not a preference. The frontend uses the
`SpeechRecognition` / `webkitSpeechRecognition` Web Speech API
(`frontend/src/voice.ts`) to transcribe the user's voice in the browser.
Firefox has never implemented that API at all — there is no flag, no
polyfill, no workaround. Safari's support is too inconsistent to rely on.
If someone asks to use Firefox (or anything but Chrome) for the mic, tell
them directly that it will not work, rather than letting them debug a
"broken" mic for an hour. `README.md` already states this requirement; don't
let a setup walkthrough contradict it.

## Chrome's microphone permission is scoped per origin — INCLUDING THE PORT

`http://localhost:5173` and `http://localhost:5174` are different origins as
far as the mic grant is concerned. Moving the frontend to a different port —
restarting Vite after a port conflict, following an old bookmark, `--port`
on the backend changing the URL you open — silently loses the grant, and
Chrome does **not** re-prompt once a permission has been dismissed; it just
stays denied with no visible error. This has cost a live session before.
If the mic stops working after everything
else looks fine, the first question is "did the URL's port change" — check
`chrome://settings/content/microphone` for the exact origin in use, not just
"is the mic allowed somewhere."

## JARVIS runs on the Claude Code subscription — never an API key

The voice brain (`brain.py`) is one long-lived `claude -p` process

Report a problem

Foxx AIJARVIS setup
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.