← AI Catalyst C3All programsHomeSearch
AI Catalyst C3·Core Session - Week 19·2:57:24

24/7 Chief of Staff: Building 'Jarvis' - Hermes Agent as the Brain on an Azure VM, DeepSeek Harness as the Pluggable Face, Agent Client Protocol Instead of MCP, a Realtime Voice Orb, and Tailscale to Keep It Yours

Harshit Vadiparthy Instructor - runs his own 'Jarvis' (a Hermes agent on an Azure VM he calls Jarvis Brain, in use since February 2025) and rebuilds one from scratch live with Claude Code · Shivani Outskill community manager - three weeks left, immersion date pending, Town Hall Nov 1, CSAT poll, closes · Cody, Debra, Gautam, Jennifer, Bethany, Stephen, Rahul, Anup, Vikram, Jayanthi, Rajesh, Suraj, Sarah Participants whose chat questions are answered (as heard)

The short version

  1. Consumer agents - OpenAI's new ChatGPT 'Dot' (a personal agent in your Codex context with a call button; does not eat your usage limits; optional computer-use history), Instinct (a WhatsApp number plus a fixed set of connectors) and Grok Bot - are stable and often enough. A custom 'Jarvis' exists for what they lack: your own connectors, MCPs, SSH, CLIs and custom workflows - at the price of instability and constant fixes (0:14-0:28).
  2. Jarvis = a Hermes agent (the open-source agent from Nous Research) holding memory, knowledge graph and decisions, living on a VM, with the open-source 'DeepSeek Harness' (everything - chat, API, model adapter, prompt, agent loop - is a plugin) on top as the interface, a voice layer, and Tailscale so only your devices can reach it (0:26-0:35, 1:09-1:10).
  3. Where it lives: your laptop (not 24/7; the Hermes desktop app is flaky), a Mac Studio or DGX Spark (works but you must be there to fix it), the cloud (Azure first - OpenAI models and a strong CLI; then AWS, GCP), or Hostinger one-click. Everything is done by prompting Claude Code to drive the Azure, AWS and gcloud CLIs - never the portal. Recommended VM: 2 vCPU / 8 GB (Standard B2ms, ~$60/month); 1 GB at $8 is too small. Resource group, region quota, snapshots as backup (0:36-1:22).
  4. Install Hermes with its official installer over SSH (Node, Python, agent browser, TUI and web UI), then DeepSeek Harness via an SSH tunnel to localhost:3080. Claude first proposed an MCP bridge; Harshit pushed back ('MCP is slow') and the repo's own docs settled it: Agent Client Protocol (ACP) - agent talks to agent, no middleman - with Hermes bound to loopback and DSH the only thing that reaches it (1:23-1:44, 1:55-2:00).
  5. Voice: an OpenAI key wired into DSH's multi-provider adapter (first wrongly stored in the DeepSeek slot), GPT-6 at medium effort, then a Claude-built 'Jarvis' voice orb on the realtime API - the realtime model is 'ears and mouth', the harness agent does the thinking - registered as a DSH plugin. 'Hey Jarvis, you up?' answers; the agent still claims no harness connection, which is the AI playing safe and needs tighter prompting. Tailscale (free for six users) turns the public IP into a private tailnet reachable from phone, laptop and Mac mini (2:03-2:49).
  6. Because everything is a plugin, the same harness becomes a spatial 'Tony Stark' workspace (move windows by gesture), a customer-facing dashboard or an AI CRM; Telegram beats Slack and Teams for bot reliability; Hermes on the same Hostinger box as n8n can edit the n8n workflows directly. Resources promised: the voice plugin on GitHub, all prompts, the VM-sizing table. Three weeks left; Town Hall Nov 1; immersion date by Monday; recordings available for a year (2:49-2:57).

Outskill's post-read

The written recap Outskill published after the session (Catalyst_Week19_Session1_Building_Your_Own_Jarvis_Post_Read.docx). Where it is sharper than the live session, those points are here; the full concepts below are from the recording.

  1. The core idea: Jarvis is your own agent with a voice interface, not a separate product - Hermes holds the brain (memory, knowledge, decisions), a harness on top supplies the interface and integrations, and a private network keeps access to you alone. 'What makes it Jarvis is the integrations you give it.'
  2. Consumer agents vs a custom agent: Dot (OpenAI, ~$100 subscription, lives in your Codex context) and Instinct (works through a mobile number) are very stable but limited to the connectors the app allows; a custom agent gets connectors, MCPs, SSH, CLI and custom APIs at the cost of constant fixes. Decision rule: stability vs integrations and control.
  3. The four layers: Hermes agent (foundation and brain - files, memory, knowledge graph, decision graphs, skills), DeepSeek Harness (interface and orchestration), a real-time voice model as ears and mouth only, and Tailscale as the private network. You pay for two things - the brain (API key or ChatGPT/Codex subscription) and the home (a Mac Mini has no monthly cost; a cloud server does).
  4. Everything in the DeepSeek Harness is a plugin - chat, APIs, model selector, prompt, model adapter, tool registry, session log and the agent loop - so the same harness can become a voice-only interface, a customer-facing dashboard or AI CRM, or a workspace with vision. Multi-provider; no memory of its own, so it draws memory from Hermes. The 'Awesome DeepSeek Harness' GitHub list collects plugins and themes (many Chinese open source; one prompt makes them English).
  5. ACP, not MCP: Hermes and the harness connect through the Agent Client Protocol, agent-to-agent with no middleman; MCP gets slower as connectors are added. Hermes is bound to loopback so only the harness talks to it. Architecture to remember: microphone -> Tailscale -> Layer 1 Hermes (ACP) -> Layer 2 custom plugin -> Layer 3 web interface. When a coding assistant suggests replacing Hermes with the harness or adding an MCP layer, the architecture is your decision: Hermes stays.
  6. Where Jarvis lives: not your own computer (not 24x7, and the Hermes desktop app was shown slow with the gateway disconnecting); cloud ranked Azure first (OpenAI models, excellent CLI, the agent can control its own brain), AWS second, GCP third (good fit for Gemini); Hostinger one-click also works, including on a server already running N8N. Sizing: 1 vCPU / 1 GB (~$8) is too small, 4 GB workable, 2 vCPU / 8 GB recommended. Keep Jarvis on its own machine; Hermes is just files, so snapshots restore the whole brain; drive the cloud from its CLI via a coding agent, not the portal.
  7. Privacy: never leave the interface open on a public IP. Tailscale ties a private VPN to your account (free plan: unlimited devices, up to 6 users); a shared link will not work for anyone else; install the phone app to reach Jarvis on the go.
  8. The voice layer and its limit: the orb opens a voice agent that only listens and speaks while the harness thinks; conversations sync into Hermes memory. Expect the voice agent to assume it has no API connections and claim it cannot reach the harness - fix by prompting it explicitly that it lives inside the dashboard and has access to everything; wiring takes several restarts. Messaging order: Telegram, then Slack, then Teams. Six pitfalls with better approaches, five key takeaways; Harshith promised the resources, his voice plugin, the prompts and the Awesome DeepSeek Harness links after the session.

Its headings The core idea · Consumer agents vs. a custom agent · What Jarvis is made of · Why the harness is built from plugins · How the layers connect: ACP, not MCP · Where Jarvis should live · Keeping Jarvis private · The voice layer and its limits · Common pitfalls and better approaches · Key takeaways

At a glance, three clicks deep

Skim here first: the closed row is the glance, open is the study card with the key points and timestamps, and the ↓ link drops to that concept's full write-up below.

01ChatGPT 'Dot', Instinct and Grok Bot vs your own harness: stability against connectorsConsumer agents trade flexibility for stability;0:14:00›

Consumer agents trade flexibility for stability; a custom harness (Hermes + DeepSeek Harness) buys arbitrary integrations at the cost of maintenance.

Dot: Codex-context agent, call button, no usage-limit cost, computer-use history (0:15-0:21)

Instinct: WhatsApp number, fixed connectors, very stable (0:21-0:23)

Custom-only: connectors, MCPs, SSH/CLI, custom workflows and APIs (0:23-0:24)

Custom = less stable, constant fixes, can stop working (0:24-0:25)

↓ Full write-up of this concept

02The Jarvis stack: Hermes agent as brain, DeepSeek Harness as pluggable face, voice on top, Tailscale around itJarvis = Hermes (brain, memory) on a VM + DeepSeek Harness (plugin-based interface) + a voice plugin + a pr…0:26:00›

Jarvis = Hermes (brain, memory) on a VM + DeepSeek Harness (plugin-based interface) + a voice plugin + a private network.

Hermes holds memory, knowledge graph, decisions; Jarvis Brain since Feb 2025 (0:26-0:27, 1:18)

DSH: every component is a plugin; no memory of its own (0:32-0:33, 2:11-2:12)

Agenda: VM -> Hermes -> DSH -> voice -> Tailscale (1:09-1:10)

Only two paid things: the model subscription or API, and the home (1:55-1:56)

↓ Full write-up of this concept

03Where the agent lives: laptop, dedicated box, cloud VM or Hostinger - and why Azure firstHost the agent on a cloud VM (Azure preferred) sized around 2 vCPU / 8 GB, driven entirely through CLIs fro…0:36:00›

Host the agent on a cloud VM (Azure preferred) sized around 2 vCPU / 8 GB, driven entirely through CLIs from a coding agent, with snapshots as backup.

Laptop: no 24/7; Hermes app flaky; dedicated hardware needs physical presence (0:42-0:49)

Azure > AWS > GCP for agents; Hostinger one-click; moving = copying files (0:45-0:47)

Sizes: $8/1 GB too small; B2ms 2 vCPU/8 GB ~$60 recommended (1:13-1:16)

Resource group, region quota, snapshots; CLI not console; Claude installs az/aws/gcloud (0:50-1:08, 1:19-1:22)

Watch for keys echoed in terminal output - revoke them (1:00, 1:24)

↓ Full write-up of this concept

04Installing Hermes over SSH, then DeepSeek Harness through a tunnel, and fixing the provider configInstall Hermes with its installer over SSH, reach DSH through an SSH tunnel, and let the coding agent repai…1:23:00›

Install Hermes with its installer over SSH, reach DSH through an SSH tunnel, and let the coding agent repair the provider/model configuration rather than editing files by hand.

Hermes installer: Node, Python, agent browser, TUI + web UI; gateway later (1:23-1:30)

DSH via SSH tunnel to localhost:3080; v2 preview; awesome-DSH plugin list (1:56-2:02)

Key under the wrong provider slot -> wrong endpoint; Claude fixes the adapter config (2:05-2:12)

Subscription or API key both work in DSH (0:33-0:34)

↓ Full write-up of this concept

05Agent Client Protocol instead of MCP: the harness talks to the agent directlyACP is the agent-to-agent connection used between the DSH interface and the Hermes brain, chosen over MCP f…1:37:00›

ACP is the agent-to-agent connection used between the DSH interface and the Hermes brain, chosen over MCP for latency and because no intermediary is needed.

MCP bridge proposed, rejected as a slow middleman (1:37-1:40)

ACP found in the DSH packages; agent-to-agent, direct (1:42-1:43)

Three layers behind Tailscale; Hermes on loopback (1:43-1:44, 1:55-1:56)

Version mismatch caught by reading the installed build (2:30-2:31)

Sonnet fights, Opus understands but is slow (1:39)

↓ Full write-up of this concept

06The voice orb: realtime API as ears and mouth, the harness agent as the thinker, shipped as a DSH pluginA DSH plugin whose realtime voice model handles speech only and delegates reasoning and actions to the harn…2:13:00›

A DSH plugin whose realtime voice model handles speech only and delegates reasoning and actions to the harness agent over ACP.

Prompt: button -> orb -> realtime API, persona Jarvis (2:13-2:14, 2:18-2:19)

Standalone first, then a registered plugin ('hours not minutes') (2:22-2:24, 2:41-2:43)

Realtime model = ears and mouth; harness thinks; ACP target configurable (2:28)

Agent denies connections it has - prompt it explicitly; restarts needed (2:46-2:49)

Chats backfilled and synced into Hermes memory (2:15-2:17, 2:23)

↓ Full write-up of this concept

07Tailscale makes it private; plugins make it a spatial workspace, a dashboard or a CRMSecure the harness with a Tailscale tailnet, then reshape it through plugins into whatever interface the us…2:33:00›

Secure the harness with a Tailscale tailnet, then reshape it through plugins into whatever interface the use case needs.

Tailscale: free for 6 users; install on VM, approve, mobile app; link private to your devices (2:33-2:39)

Spatial workspace plugin; dashboards and CRM; chat can be removed entirely (2:49-2:54)

Telegram > Slack > Teams for bots (2:41)

Resources: plugin on GitHub, prompts, VM table; recording and resources on the LMS next day (2:42, 2:53-2:55)

↓ Full write-up of this concept

The concepts in full

01

ChatGPT 'Dot', Instinct and Grok Bot vs your own harness: stability against connectors

0:14:00

Dot can call you, watch your screen and never touches your usage limits. What it cannot do is connect to anything OpenAI has not approved.

OpenAI's Dot (launched at its dev day) is a personal agent that lives inside your Codex context with a 'start a call' button - a different harness around the same voice model - and settings for plugins, passwords and an opt-in computer-use history that watches your work and builds on it. Instinct (app.instinct.com) hands you a phone number to message and a short list of connectors (Workspace, Outlook, Linear, Notion, GitHub, Slack, Granola, shopping); Grok Bot is the third. For many people this is enough and these consumer products are stable - they rarely break. The custom harness exists for four things they do not offer: your own connectors and MCPs, SSH and CLI access, and custom workflows and APIs - and for not waiting on a vendor to add a feature. The cost is that custom harnesses are not very stable, need constant bug fixes, and sometimes stop working.

Worked example · from the session

Harshit asked his Jarvis from a cafe how far his 3D print had got; it took a photo of the printer and sent it - an integration no consumer agent offers.

Why it matters

Decide first whether you need a harness at all; most of the session's complexity follows from saying yes.

02

The Jarvis stack: Hermes agent as brain, DeepSeek Harness as pluggable face, voice on top, Tailscale around it

0:26:00

Jarvis is just a name. The brain is Hermes; the face is a harness where even the prompt is a plugin.

The Hermes agent (Nous Research, open source) is where memory, knowledge graph and decision graphs live - every harness the cohort has built sits there. Harshit's own instance, Jarvis Brain, has run since February 2025 (OpenClaw first, now Hermes) and holds his emails, meeting notes, contacts and domains. The DeepSeek Harness (DSH) sits on top as interface and orchestration: the chat, the API, the model selector, the prompt, the tool registry, the session log and the agent loop are all plugins, so any part can be swapped to suit Hermes - Codex's harness is also open source but not built to plug into other tools. DSH has no memory of its own; it pulls memory from Hermes. The agenda: pick a VM on Azure, install Hermes, install and connect DSH, add a voice command to the interface, secure it with Tailscale. DSH's desktop app for Mac and Windows is not customisable; the source is. Awesome-DSH lists plugins, themes and UI kits (much of it from Chinese developers - 'one prompt makes it English').

Worked example · from the session

When Claude suggested replacing Hermes with DSH outright, Harshit corrected it: Hermes stays as the foundation holding files, memory and knowledge; DSH is the layer you talk to.

Why it matters

The layering is what makes the rest - voice, dashboards, spatial UI - possible without losing the memory you have built up.

03

Where the agent lives: laptop, dedicated box, cloud VM or Hostinger - and why Azure first

0:36:00

A laptop cannot run it 24/7. A Mac Studio can, but if it breaks you have to be in the room. A VM you can rebuild from a cafe.

Three homes. Your own computer: not recommended - eats space, cannot run around the clock, and the Hermes desktop app's gateway keeps disconnecting; a dedicated Mac Studio or DGX Spark is reliable but any fix needs you physically present. Cloud: enterprise-grade, stable, controllable from a CLI - Azure first (every OpenAI model is on Azure and its CLI is excellent, so the agent can restart or redeploy its own brain), AWS second, GCP third (good with Gemini). Hostinger: one-click deployment on Hostinger's servers, also with a CLI, and fine alongside an existing n8n install - the agent can then edit the n8n workflows. Moving later is just copying files and reconnecting Google and calendar accounts. Cost: a 1 vCPU / 1 GB VM is $8 a month and too small; 4 GB is workable; 2 vCPU / 8 GB (Standard B2ms, about $60) runs Hermes 24/7 reliably, more if the agent will drive browsers. Azure takes scheduled snapshots of the whole VM as backup, so a corrupted machine can be restored and respun exactly where it stopped. All of it is done by prompting Claude Code to install and drive the Azure, AWS and gcloud CLIs - 'it's been a while since I even opened the console'. One caution the session surfaced live: Claude printed an Anthropic API key into the terminal twice and told him to revoke it.

Worked example · from the session

Spinning the VM: 'create a resource group and the best VM for a Hermes agent doing basic tasks really well, in a table' - quota full in East US, so Claude moved it to Central US and created Jarvis Home.

Why it matters

The home decides uptime, cost, recoverability and how much you can fix remotely.

04

Installing Hermes over SSH, then DeepSeek Harness through a tunnel, and fixing the provider config

1:23:00

The official installer does Node, Python and the agent browser for you. The part that bit was the API key saved in the wrong slot.

Hermes: a fresh clone from GitHub, installed with Nous Research's Linux installer script over SSH - Node 26, Python 3, dependencies, an agent browser, a terminal UI and a web UI; the gateway for Discord and Slack is a later step. DSH: rather than exposing an arbitrary command-execution UI to the internet, Claude opened an SSH tunnel so the harness appears at a localhost link (port 3080) in Chrome; DSH 2 is still in preview. Configuring a model: the UI only offered a DeepSeek slot, so the OpenAI key was stored under the DeepSeek reference and pointed at DeepSeek's endpoint - Claude read the config (batch-file based, multi-provider) without printing the key, moved it to the right provider, added the model catalogue, restarted DSH, and GPT-6 appeared with an effort setting (medium). Harshit's observation that the same key feels faster inside DSH than in ChatGPT, which he attributes to 'mixture of experts', is his explanation, not a verified one. A ChatGPT subscription can now also be used inside DSH instead of an API key.

Worked example · from the session

'Found the root cause: your key is stored under DeepSeek and the UI only offered a DeepSeek slot, so your OpenAI key is pointed at DeepSeek's endpoint.'

Why it matters

The two installs are routine; the provider mapping is the step most people will get wrong.

05

Agent Client Protocol instead of MCP: the harness talks to the agent directly

1:37:00

Claude drew an MCP bridge between the face and the brain. Harshit refused it twice; the repo's own docs said ACP.

Claude's first architecture put an MCP connection between DSH and Hermes. Harshit's objection: DSH sits on top of Hermes, so a middleman adds latency - 'the more vectors you add, the slower it gets' - and MCP is slow. Pushed to re-read the DSH packages, Claude found that both projects implement the Agent Client Protocol (ACP): the agent connects to the other agent or plugin directly, no MCP, no API intermediary. The settled diagram: microphone -> Tailscale private net -> layer one Hermes (bound to loopback, reached only by DSH over ACP) -> layer two the custom plugin -> layer three the web interface. Later the voice plugin's ACP target is made configurable - DSH's agent now, Hermes directly later - a one-line change. Two mismatched DSH versions (the VM's installed build vs the cloned source) were caught by reading the built artifact on the VM as ground truth. Sonnet 'fought' the architecture; Opus 5.5 understood it but is slow - the class voted for Opus.

Worked example · from the session

'Hermes stays bound to loopback. Only DSH talks to it. Nothing is exposed, even on the tailnet.'

Why it matters

A reusable design rule: when a layer sits directly on another agent, look for an agent-to-agent protocol before reaching for MCP.

06

The voice orb: realtime API as ears and mouth, the harness agent as the thinker, shipped as a DSH plugin

2:13:00

'Hey Jarvis, you up?' - 'Always, sir, quietly humming in the background.' Then it admitted it could not see the harness.

The prompt: keep DSH's interface, add a button that opens a simple moving orb, and when clicked use the realtime voice API underneath, with the persona 'Jarvis'. Claude verified the key could mint a realtime session, first shipped a standalone voice server copied to the VM (the orb answered), then - because DSH's rules require a plugin package registered in three places and published to npm, 'hours not minutes' - built it properly as the Jarvis voice plugin that appears in DSH's bottom-right. The design decision Claude resolved: the realtime model is only ears and mouth; the harness agent does the thinking, so talking to the orb is talking to the harness, not a separate chatbot. At test time Jarvis reported no API key for the DeepSeek provider and could not confirm the Hermes connection even though the key existed - Harshit's diagnosis is that the model assumes no connections 'to be on the safer side' and needs explicit prompting that it lives inside the dashboard with full access; a couple of restarts are normal. Meanwhile a second prompt had DSH itself read its own Hermes and set up a backfill-plus-sync so every harness chat is saved into the agent. Next steps named: Gmail through the GWS CLI, then every other plugin; a Jeff/decisions-API layer is possible.

Worked example · from the session

Two agents at once: Claude Code building the orb plugin while Jarvis installed Tailscale on its own VM.

Why it matters

It is the bridge from a chat harness to a spoken assistant that acts in the UI ('open the home folder', 'create a new chat').

07

Tailscale makes it private; plugins make it a spatial workspace, a dashboard or a CRM

2:33:00

The VM's IP is public. Tailscale means the same link opens for you on your phone and for nobody else.

Tailscale (free for up to six users, unlimited devices) creates a private VPN - a tailnet - tied to your account; install it on the VM (Jarvis did this itself), approve the machine at the sign-in link, install the app on your phone, Mac and Mac mini, and the Jarvis link only works inside that network. Beyond voice: Harshit's own harness has a spatial workspace plugin - click 'spatial' and move windows by gesture, zoom, open the sub-agent harness, backend and audit views, 'fully Tony Stark mode'. Because the chat, the sidebar and the dashboard are plugins (shadcn/Tweakcn UI), the same harness can become a statistics dashboard customers see, an AI CRM, or a single-purpose voice interface with the chat removed; ask the harness and it changes its own interface. For messaging bridges: Telegram first (bot support), then Slack, then Teams. He will publish the voice plugin and spatial workspace on GitHub with all prompts and the VM table.

Worked example · from the session

Anuj: 'perfect for an AI CRM' - DSH as the dashboard on top, Hermes underneath, ACP between.

Why it matters

Security is the last step that makes a 24/7 agent safe to leave running, and the plugin model is why the build generalises.

Tools referenced

ToolCoverageMomentContext
Claude Codedemonstrated0:30:00Drives Azure/AWS/gcloud CLIs, installs Hermes and DSH, builds the voice plugin; Opus 5.5, Sonnet 5, Haiku tried
Hermesdemonstrated1:23:00Nous Research open-source agent - the brain
DeepSeek Harnessdemonstrated1:56:00Plugin-based harness on top of Hermes (as heard)
Microsoft Azuredemonstrated0:50:00Resource group, B2ms VM 'Jarvis Home', snapshots, Azure CLI
Amazon Web Servicesdemonstrated1:03:00AWS CLI install shown; Claude on Bedrock keys
Google Clouddemonstrated1:06:00gcloud CLI install
Tailscaledemonstrated2:34:00Private tailnet; free tier
OpenAI APIdemonstrated2:03:00API key for DSH; realtime voice API
ChatGPTexplained0:15:00'Dot' personal agent with call feature
Instinctexplained0:21:00Consumer agent via WhatsApp number
Hostingerexplained0:43:00One-click alternative home
n8nmentioned0:45:00
Telegrammentioned2:41:00

Action items

    Resources mentioned

    Resources
    • docHermes agent (Nous Research) GitHub repository
    • docDeepSeek Harness GitHub + awesome-DSH plugin list
    • docHarshit's Jarvis voice plugin and spatial workspace
    • docAzure VM sizing table (from the chat)

    Extraction notes

    This page was built from an auto-generated transcript, which garbles product and people's names. Those were corrected silently in everything above and logged here for transparency. The warnings flag claims that were true on the recording day but change fast.

    Transcript corrections applied

    The transcript saysThe trainer actually means
    deep seek hardness / deep sea cardinators / DeepSea Karnas / DSHDeepSeek Harness (as presented; name unverified)
    armies agent / air maze / RMS / our mazeHermes agent
    ale scale / tail scaleTailscale
    GPT Live / GPT one liveOpenAI realtime voice API (Claude corrected the name live)
    Harshid / Harshwet / Marshit / ArshadHarshit Vadiparthy (instructor)
    post Stinger / hostingHostinger
    Jeff / JAVAn OpenAI decisions-API-style layer as discussed in the cohort (as heard, unresolved)
    MSM / M-O-Mmixture of experts (MoE)
    Shad CNUI, Tweak CNUIshadcn/ui, Tweakcn

    True on recording day — verify before relying