selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

sutando logo

Self-host sutando

sparrow-v0.6.1

Personal AI agent that runs locally on your Mac

AlphaOpen SourceMIT
Updated10 hours ago
LanguagePython
Setup difficultyAdvanced
Stars
400
Ports
8080 (Voice web client — talk to Sutando here), 7844 (Dashboard — status, activity, and capability matrix), 7843 (Agent API — submit tasks from any device), 9900 (Voice agent WebSocket), 7845 (Screen capture server), 3100 (Phone conversation server (Twilio webhook target)), 4040 (ngrok admin UI (when ngrok is running))
Requires
Claude Code or Codex CLI, Fswatch, Node.js
Install with Windows
sutando screenshot 1sutando screenshot 2sutando screenshot 3

What is sutando?

Sutando is a personal AI agent (called a "Stand" after JoJo's Bizarre Adventure) that runs entirely on your own Mac. It uses your existing CLI session as its reasoning engine, with a Node.js voice agent (Gemini Live) for real-time voice, a web dashboard, and optional bridges for Telegram, Discord, Slack, and phone calls via Twilio. You interact by voice in the browser, by phone, or via messaging apps. It can see your screen, join Zoom and Google Meet calls, make phone calls, automate browser tasks, and run an autonomous loop that improves its own code when idle. It syncs memory across multiple Macs via a private git repo. The project is in alpha, macOS-first with experimental Windows support. No pay-per-token API key is required for the core.

Should you self-host sutando?

sutando scores 45/100 on selfhost.directory (how scoring works) and ranks #66 of 120 in AI Assistant. It has 400 GitHub stars.

It shipped 9 stable releases in the past year. The latest, sparrow-v0.6.1, came out on 26 October 2026. New versions land roughly every 2 days.

Setup is advanced: plan for several services and some ongoing maintenance. It is MIT-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is hermes-agent (89/100, 257 957 stars). It scores higher overall, so compare the two before you pick. See sutando vs hermes-agent side by side.

Features

  • Agent API
  • Autonomous self-improvement
  • Browser Automation
  • Calendar and Contacts
  • Dashboard
  • Health Monitoring
  • Meeting participation
  • Messaging bridgesDiscord and Slack require pip packages
  • Multi-Machine Sync
  • Notes and memory
  • Pattern detection and user modeling
  • Phone callsRequires Twilio account and ngrok
  • Screen capture and analysis
  • Task delegation
  • Voice agent

sutando README

How to install sutando

Install sutando with Windows

Clone (PowerShell)

git clone https://github.com/sonichi/sutando.git cd sutando

Configure

Copy-Item .env.example .env

Edit .env in your editor; set GEMINI_API_KEY

Install dependencies + start everything

pwsh -File src/startup.ps1

Stop everything

pwsh -File src/stop.ps1

Restart

pwsh -File src/restart.ps1

Experimental; headless agent only (no menu-bar app, no AppleScript automation)

How to configure sutando

  • AG2_REMOTE_TOKENAG2 remote relay onboarding string

    AG2 remote relay onboarding string

  • CARTESIA_API_KEYCartesia TTS API key for post-task result audio

    Cartesia TTS API key for post-task result audio

  • CARTESIA_VOICE_IDf786b574-daa5-4673-aa0c-cbe3e8534c02Cartesia voice ID

    Cartesia voice ID

  • CLIENT_PORT8080WebUI + /ws proxy port

    WebUI + /ws proxy port

  • DO_NOT_TRACK0Disable telemetry

    Disable telemetry

    values: 0, 1

  • GEMINI_API_KEYGoogle AI Studio API key (vision + image/video generation; voice too when GEMINI_VOICE_API_KEY is unset)

    Google AI Studio API key (vision + image/video generation; voice too when GEMINI_VOICE_API_KEY is unset)

  • GEMINI_VOICE_API_KEYOptional separate key for the voice session (Gemini Live + STT + subagent text LLM)

    Optional separate key for the voice session (Gemini Live + STT + subagent text LLM)

  • GITHUB_WEBHOOK_SECRETGitHub webhook signature verification secret

    GitHub webhook signature verification secret

  • IMAGE_MODELgemini-3.1-flash-image-previewImage generation model

    Image generation model

  • NGROK_DOMAINReserved ngrok domain for stable tunnel URL

    Reserved ngrok domain for stable tunnel URL

  • NOTIFICATION_EMAILEmail for health alerts

    Email for health alerts

  • OWNER_NUMBEROwner phone number (full access)

    Owner phone number (full access)

  • POINTER_MODELgemini-3-flash-previewPointer Teacher vision model (point_at)

    Pointer Teacher vision model (point_at)

  • PORT9900Voice agent WebSocket port

    Voice agent WebSocket port

  • SUTANDO_API_TOKENAgent API authentication token for remote access

    Agent API authentication token for remote access

  • SUTANDO_LAN_SHARE0Serve the /ws voice proxy off-localhost for LAN access

    Serve the /ws voice proxy off-localhost for LAN access

    values: 0, 1

  • SUTANDO_MEMORY_REPOPrivate GitHub repo for memory sync between machines

    Private GitHub repo for memory sync between machines

  • SUTANDO_SELF_DEVELOPMENT_ENABLED1Autonomous self-development (ON by default, set to 0 to disable)

    Autonomous self-development (ON by default, set to 0 to disable)

    values: 0, 1

  • SUTANDO_TAILNET_SERVE0Advertise wss:// endpoint for Tailscale HTTPS

    Advertise wss:// endpoint for Tailscale HTTPS

    values: 0, 1

  • SUTANDO_TEAM_TIER_OWNERMachine identity for team-tier Discord task ownership

    Machine identity for team-tier Discord task ownership

  • SUTANDO_TELEMETRY1Product telemetry (set to 0 to disable)

    Product telemetry (set to 0 to disable)

    values: 0, 1

  • SUTANDO_WORKSPACEWorkspace location (legacy escape hatch)

    Workspace location (legacy escape hatch)

  • TWILIO_ACCOUNT_SIDTwilio Account SID for phone calls and SMS

    Twilio Account SID for phone calls and SMS

  • TWILIO_AUTH_TOKENTwilio Auth Token

    Twilio Auth Token

  • TWILIO_AUTO_WEBHOOK0Auto-update Twilio webhook on startup

    Auto-update Twilio webhook on startup

    values: 0, 1

  • TWILIO_PHONE_NUMBERTwilio phone number

    Twilio phone number

  • TWILIO_WEBHOOK_URLFixed external URL for Twilio webhook

    Fixed external URL for Twilio webhook

  • VERIFIED_CALLERSComma-separated verified caller numbers (limited tools)

    Comma-separated verified caller numbers (limited tools)

  • VERIFIED_MEETINGSMeeting IDs that grant agent OS access (task delegation)

    Meeting IDs that grant agent OS access (task delegation)

  • VIDEO_MODELveo-3.1-generate-previewVideo generation model

    Video generation model

  • VISION_MODELgemini-3.1-flash-liteScreen vision model (20-word screenshot descriptions)

    Screen vision model (20-word screenshot descriptions)

  • VOICE_MODELgemini-2.5-flashVoice conversation LLM model

    Voice conversation LLM model

  • VOICE_NAMEPuckGemini Live prebuilt synthesis voice

    Gemini Live prebuilt synthesis voice

    values: Puck, Charon, Fenrir, Orus, Aoede, Kore, Zephyr, Leda, Sulafat, Algenib, Despina

  • VOICE_RESPONSE_WATCHDOG_MS5000Model silence watchdog timeout in ms

    Model silence watchdog timeout in ms

  • VOICE_WATCHDOG_REPLAY1Watchdog replay user's last utterance

    Watchdog replay user's last utterance

    values: 0, 1

  • WACLI_DEVICE_LABELSutandoWhatsApp device label

    WhatsApp device label

  • WACLI_DEVICE_PLATFORMCHROMEWhatsApp device platform

    WhatsApp device platform

  • ZOOM_DEFAULT_SHARE_SCREENtrueDefault screen share behavior for Zoom

    Default screen share behavior for Zoom

    values: true, false

  • ZOOM_PERSONAL_MEETING_IDPersonal Zoom meeting ID for "start Zoom" / "share my screen"

    Personal Zoom meeting ID for "start Zoom" / "share my screen"

  • ZOOM_PERSONAL_PASSCODEZoom personal meeting passcode

    Zoom personal meeting passcode

sutando releases & version history

More in Personal Productivity

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…