cd /news/artificial-intelligence/show-hn-self-hosted-ai-that-sees-pla… Β· home β€Ί topics β€Ί artificial-intelligence β€Ί article
[ARTICLE Β· art-52405] src=github.com β†— pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Show HN: Self-Hosted AI That Sees, Plays Minecraft, and Reacts

An open-source AI streamer called Wallie can now play Minecraft autonomously, narrating its actions in character while gathering, crafting, and fighting. The system runs locally, supports customizable personas and voices, and aims to create a believable, non-repetitive streaming experience.

read18 min views2 publishedJul 9, 2026
Show HN: Self-Hosted AI That Sees, Plays Minecraft, and Reacts
Image: source

Wallie_main_demo.mp4 #

The open-source AI streamer that sees, hears & reacts β€” and actually feels alive.

Quick Start Β· Features Β· Dashboard Β· Architecture Β· Roadmap

⭐

If you think an AI that watchesTwo seconds, and it genuinely helps a solo dev keep shipping.and hearsyour screen should exist β€” give it a star.

Every AI streamer you've seen has the same problem.

It says two sentences. s. Says two more. s. Describes your YouTube homepage like a screen reader. Forgets what it said thirty seconds ago. Ends every thought with "what do you guys think?" into a chat that doesn't exist. It's not a show β€” it's a tech demo on loop.

Wallie is different. It's an AI that actually streams β€” develops thoughts across minutes, reacts to your screen like a person who's been using that computer all day, remembers what it covered an hour ago, takes opinions and sticks with them, drifts between topics the way real conversations drift, and shuts up when there's nothing worth saying.

You design the streamer. Wallie runs the show.

   persona  ──┐
   topics   ───
   chat     ───
   vision   ──┼──►  Wallie  ──►  Voice (TTS)  ──►  OBS / virtual cable  ──►  your stream
   hearing  ───             ──►  Live2D avatar (VTube Studio)
   schedule β”€β”€β”˜

Pick the personality. Pick the voice. Pick the LLM. Pick the platform. Everything is swappable, everything is configurable from the browser, and the whole thing runs on your machine with your keys.

Wallie doesn't just watch your screen anymore β€” it picks up the game and plays it. Right now that's Minecraft: it gathers, crafts, builds, fights, and explores entirely on its own, narrating every moment in character. Smooth, human-looking camera. No human at the keyboard, no script β€” a real playthrough with a personality.

https://www.youtube.com/shorts/NEfsmppOXJk

And here's the part that makes it believable: the commentary is grounded in what Wallie is actually doing β€” its real inventory, health, and current goal β€” not guessed from a blurry frame. So it says

*"heading down to mine diamonds"*because it is, and brings up

*"that one time I dug straight into a lava pit"*because that's its run.

It actually playsβ€” a planning brain sets the goal;Baritonehandles pathfinding & mining, and a custom Fabric mod handles crafting, combat, item pickup, and a buttery-smooth camera that looks human, not robotic.Grounded commentaryβ€” the streamer core stays in sync with the playing brain, so what itsaysmatches what itdoes.One-click setupβ€” the dashboard installs Fabric + every mod for you (and backs up your current ones first).** Any persona, any model**β€” Play is just another mode. Vision, Hearing, and Play each toggle on/off independently.

Flip on

Playin the dashboard, pick a goal, and go β€” or jump straight in:

python scripts/run_wallie_live.py

Because the existing ones are toys.

They work for a 2-minute demo and fall apart on a real stream. Here's what actually goes wrong after 10 minutes:

The problem What usually happens What Wallie does
Repetition
Says "that's interesting" every 30 seconds Dedupe engine + phrase cooldown + rolling summary that tracks everything already said
Short memory
Forgets the topic from 5 minutes ago Rolling summarizer compresses old turns into bullet notes, injected into every prompt
Robotic vision
"I can see a YouTube homepage with several videos" First-person ownership + SKIP escape hatch β€” narrates nothing, reacts to what matters
Question loops
Every segment ends with "what do you think, chat?" Question detector throttles after one; next prompt forces a statement ending
No personality
Generic helpful assistant voice Full persona system: energy, humor style, catchphrases, backstory, opinions, taboo topics
Choppy pacing
2 sentences β†’ long β†’ 2 sentences Pipeline overlap + longer thought development eliminates dead air
Broken threads
Sets up a story, never delivers it Open-thread tracker forces the next segment to pay off teases and answer its own questions
Topic whiplash
Jumps from AI to cooking to space with no bridge Association-based topic drift with configurable style (rigid / natural / freeform)

These aren't edge cases. They're the default behavior of most AI streamer projects. Wallie was built by hitting every one of these problems and refusing to ship until they were fixed.

Six LLM providers. Three TTS engines. Three chat platforms. Mix and match per profile.

LLM TTS Chat Avatar
OpenAI Fish Audio Twitch VTube Studio (Live2D)
Anthropic (Claude) ElevenLabs YouTube β€”
Google (Gemini) Piper (local, free) Kick β€”
Groq β€” β€” β€”
OpenRouter β€” β€” β€”
Ollama (local, free) β€” β€” β€”

Swap providers without changing code. Run a fully offline stream with Ollama + Piper, or go premium with Claude + ElevenLabs.

Not just a name and a system prompt. You design a character:

Identityβ€” name, handle, pronouns, age range, origin, archetype, backstory** Voice**β€” energy level (chill β†’ unhinged), humor style (pick multiple: ironic, deadpan, absurd, observational, roast...), profanity level, formalityFlavorβ€” catchphrases, running gags, banned words, favorite topics, taboo topics** Opinions**β€” strong opinions toggle, admit uncertainty, break the fourth wall** Extra notes**β€” free text for anything the structured fields miss

Save multiple personas. Switch between them with a dropdown.

The single biggest technical challenge. Most AI chatbots break down after 20 minutes because the context window fills up.

Wallie's approach:

Rolling summarizerβ€” every ~14 segments, a background LLM call compresses older history into tight bullet notes** Session notes**β€” that compressed memory is injected into every system prompt, so the streamer knows what it already said** Cross-session memory**β€” key facts and viewer interactions persist across streams** Dedupe engine**β€” paraphrase-aware similarity check (bigram + trigram Jaccard) catches the model repeating itself in different words

Real streamers don't talk at a constant rate. They get excited, they to think, they go on tangents, they settle into a flow.

Mood engineβ€” arousal, valence, focus, and talkativity drift slowly over the stream. High arousal = faster, warmer output. Low talkativity = silence beats. Mood state feeds into the avatar for reactive animation.Attention engineβ€” vision events are filtered through a probabilistic decision layer. Not every screen change gets a deep reaction. Some get a glance. Some get ignored. Some trigger a personal tangent.Silence beatsβ€” the streamer holds natural s when the mood says to. Dead air handled by design, not by accident.** Pipeline overlap**β€” next segment starts generating while current audio is still playing. No awkward 3-second gaps between thoughts.

wallie_minecraft.mp4 #

Screen reactions are the hardest part to get right. Wallie's approach:

First-person ownershipβ€” Wallie owns whatever is on screen. Gaming: "I just got bodied by that boss", not "the character is fighting a boss". Browsing: "let me pull this up", not "the user is browsing". Never third-person, never narration.SKIP escape hatchβ€” if there's nothing specific to name, the model outputsSKIP

and stays quiet. No more narrating generic UIs.Activity adaptationβ€” detects scrolling, typing, app-switching, video playback and adjusts reactions accordingly. Typing β†’ ignore. App switch β†’ react. Rapid browsing β†’ wait until user settles. Each activity type gets context-aware prompting.Attention engineβ€” not every screen change gets the same treatment. DEEP reactions (22%), quick GLANCEs (28%), personal TANGENTs (5%), deliberate IGNOREs (27%), and SILENCE beats (18%). Streak fatigue prevents reacting the same way twice in a row.Scene memoryβ€” remembers what it last said about the current screen. Dedupe threshold at 0.65 with per-sentence comparison catches paraphrased repetition.

Wallie captures your system audio (WASAPI loopback) and reacts to it live, fused with vision into a single reaction β€” sight and sound, one voice. Just like you organize your senses, not two narrators talking over each other.

Speech & lyricsβ€” local speech-to-text (faster-whisper) transcribes videos, voice chat, and song lyrics. Auto-uses your GPU if available, clean CPU fallback if not.Real music understandingβ€” pure-numpy DSP, no extra ML weight. It reads** major/minor key β†’ mood**, tempo + beat strength, instrumentation texture (bass-heavy / acoustic / airy / lo-fi), and production quality (crisp / muddy / harsh). A sad song reads as melancholy; a beat drop reads as energy. It'll call a track a banger or roast a muddy mix.Multimodal fusionβ€” what it hears is fused with what it sees into one coherent reaction, never two competing ones.** No self-echo**β€” content-based guard so Wallie never reacts to its own TTS bleeding back through the loopback.** Pure-hearing mode**β€” run it with vision off and it reacts to audio the way it reacts to a screen: stays quiet, listens, then reacts to what's playing.

Enable it in the dashboard's Hearing section. Needs two extra deps: pip install soundcard faster-whisper

.

Play mode hands Wallie the controls. First game: Minecraft, survival, live and unscripted.

Reliable autonomyβ€” a planning brain picks high-level goals; a deterministic skill library (crafting, smelting, full tool/armour sets, mining to ore depths, hunting for food & wool, beds, combat with weapon selection, dropped-item pickup) does the actual work β€” so even a small/free model plays competently instead of flailing.Human-like cameraβ€” a custom Fabric mod eases every turn at full FPS. No snapping, no teleport-cam β€” it reads like a person playing.** Grounded commentary**β€” reactions come from the agent's real game state (inventory, health, threats, current goal), fused through the same single pipeline as vision and hearing. No screen-guessing, no hallucinated "desert temples".One-click installβ€” Fabric + all mods straight from the dashboard's Play section. Vision/Hearing/Play toggle independently, on any persona.

Not just a mouth that opens and closes. Six animation layers run simultaneously over a single WebSocket, so the avatar feels like a person β€” not a puppet.

Viseme lip syncβ€” spectral analysis of PCM audio estimates mouth shape in real-time. Front vowels (A/E/I) spread the mouth wide, back vowels (O/U) round it. Combined with RMS amplitude for jaw openness, attack/release envelope, noise floor gating, and a speaking smile baseline. The result: the avatar's mouth actually forms different shapes per sound, not just open/close.Blinkβ€” periodic natural eye blinks (~3.8s interval) with random variation and occasional double-blinks. Blink rate adapts to mood: sleepy = more blinks, alert = fewerBody motionβ€” slow torso sway on BodyAngleX/Y/Z, lower amplitude and longer period than head movement, so the avatar breathes even when silentIdle motionβ€” head sway and eye darts when not speaking. Eye-dart frequency increases when the streamer's mood focus drops (scattered attention)11 expression slotsβ€” happy, surprised, laughing, angry, sad, thinking, smug, eyeroll, confused, hype, deadpan** Keyword-driven emotions**β€” sentence content automatically triggers matching expressions (21 regex patterns, first match wins)** Expression auto-mapping**β€” on connect, Wallie discovers VTS hotkeys and matches them to empty expression slots by name. No manual configuration needed for models with standard hotkey namesMood-reactive avatarβ€” the MoodEngine's arousal/valence/focus feed directly into the avatar. Arousal scales idle and body sway amplitude (0.5×–1.6Γ—). Valence shifts brow position and adds a resting smile when the streamer is in a good mood. Focus modulates eye-dart frequencyEvent cuesβ€” super chat β†’ hype face, screen change β†’ surprised look + upward glance, thinking β†’ thinking expression, chat message β†’ head turn toward "the chat"

Everything is configured from the browser. No YAML files. No terminal commands after setup.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ β—€ WALLIE   Profile: marlow β–Ύ  βŠ• ⎘ πŸ—‘      ● LIVE  Stop  β€Ή  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚                               β”‚   LIVE STATUS     β”‚
β”‚ Identity β”‚  Section editor               β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚ Personal.β”‚                               β”‚ β”‚ Current topic  β”‚ β”‚
β”‚ Voice    β”‚  (each section has its own    β”‚ β”‚ Now saying...  β”‚ β”‚
β”‚ Avatar   β”‚   editor with live controls)  β”‚ β”‚ Open threads   β”‚ β”‚
β”‚ Topics   β”‚                               β”‚ β”‚ Recent angles  β”‚ β”‚
β”‚ Vision   β”‚  Test β–Ά monologue / chat / visβ”‚ β”‚ Session memory β”‚ β”‚
β”‚ Chat     β”‚  Output preview + β–Ά speak thisβ”‚ β”‚ Mood state     β”‚ β”‚
β”‚ Engine   β”‚                               β”‚ β”‚ WebSocket log  β”‚ β”‚
β”‚ API Keys β”‚                               β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Three columns: navigation, section editor, live status. Test any configuration change instantly with the preview buttons before going live.

No Python knowledge, no terminal, no setup steps. Download β†’ double-click β†’ done.

and unzip it (orDownload the ZIPgit clone https://github.com/Alradyin/wallie-V2.git

).Double-click First run installs everything it needs, then the dashboard opens atstart.bat

.http://127.0.0.1:8765

.Paste your API key in the dashboard β†’ pick a model β†’ hitStart.

That's the whole setup. Everything else is configured in the browser.

macOS / Linux:run./start.sh

instead (chmod +x start.sh

once).

Path LLM TTS Cost/hour Quality
Free
Gemini 2.5 Flash Piper (local) $0 Good for testing
Cheap & fast
Groq (Llama 3.3 70B) Fish Audio ~$1.50 Best balance
Premium
Claude Sonnet ElevenLabs ~$6.50 Best quality + vision

All configured from the dashboard. Add your API keys β†’ pick provider β†’ pick model β†’ Start.

Piper (free TTS) setup

Piper runs locally β€” no API key needed. One extra terminal command to download a voice:

pip install piper-tts onnxruntime
python scripts/download_piper_voice.py en_US-amy-medium

Then in the dashboard: Voice β†’ provider: piper

, path: voices/en_US-amy-medium.onnx

.

Vision setup (screen reactions)

Requires a vision-capable LLM. In the dashboard:

Engine→ toggle "Vision capable" ON- Use a vision model: claude-sonnet-4-5

,gpt-4o

,gemini-2.5-pro

, orllama-4-scout

on Groq Vision section β†’ toggle ON, adjust frame interval and sensitivity

The SKIP escape hatch is always active β€” no configuration needed.

Chat platform setup

Twitch: Add OAuth token from twitchtokengenerator.com (chat:read scope). Or leave empty for anonymous read-only.

YouTube: Drop client_secret.json

in scripts/

. First run opens browser for Google OAuth consent.

Kick: Just enter the channel slug. No auth needed (public Pusher WebSocket).

VTube Studio avatar

  • Run VTube Studio with API enabled (Settings β†’ API β†’ Enable)
  • In the dashboard: Avatar β†’ toggle ON
  • First connect triggers a plugin approval popup in VTS β€” click Allow
  • Expression slots are auto-mapped from your model's hotkeys on connect. Override manually if needed - Adjust lipsync gain/ceiling for your voice. Viseme lip sync (spectral mouth shape) is enabled by default β€” disable it in Avatar config if your model doesn't have a ParamMouthForm

parameter - Blink, body motion, and mood-reactive behaviour are enabled by default β€” tweak or disable per-feature in config

Works with any Live2D model that has standard parameters (MouthOpen

, EyeOpenLeft/Right

, FaceAngleX/Y/Z

, BodyAngleX/Y/Z

).

OBS output routing

Wallie outputs audio through your system's default audio device. To route it into OBS:

Windows: Install VB-CABLE. Set CABLE Input as default playback. In OBS: Audio Input Capture β†’ CABLE Output.

macOS: Use BlackHole the same way.

Linux: PipeWire / PulseAudio loopback (pw-loopback

).

  Screen ────► Vision ───┐
  (mss + pHash)          β”‚
                         β–Ό
  Chat ─────────►  Orchestrator  ◄──── Persona + Topics + Mood
  (YT/Twitch/Kick)      β”‚
                         β”‚  intent β†’ system prompt + user message
                         β–Ό
                   LLM (streaming)     ← 5 providers
                         β”‚
                         β”‚  token stream
                         β–Ό
                  SentenceStreamer      ← splits tokens into TTS-ready sentences
                         β”‚
                         β–Ό
                   TTS pipeline        ← 3 providers, parallel pre-fire
                         β”‚
                         β”‚  PCM16 audio
                         β–Ό
                    AudioPlayer ──────► VTube Studio (viseme lipsync + blink + body + expressions)
                         β”‚                    β–²
                         β”‚              Mood Engine (arousal/valence/focus)
                         β”‚
                         β–Ό
                  speakers / OBS / virtual cable

One pipeline. One conversation history. No competing buffers. This is the defining design choice. Early prototypes had parallel generation paths and went insane β€” the streamer would repeat itself, contradict itself, and lose all continuity. Everything goes through one orchestrator, one set of messages, one output path.

Intent priority: highlight chat (barge in) β†’ vision event β†’ ordinary chat β†’ monologue. Higher-priority intents preempt lower ones.

Continuity machinery:

  • Rolling summary of older turns β†’ injected into system prompt
  • Open-thread tracker β†’ forces the next segment to resolve dangling questions and teases
  • Phrase cooldown β†’ prevents catchphrase spam
  • Theme tracker β†’ blocks repeated angles
wallie-v2/
β”œβ”€β”€ wallie.py              # entrypoint
β”œβ”€β”€ config.py              # pydantic models, profile management
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ orchestrator.py    # the single pipeline
β”‚   β”œβ”€β”€ persona.py         # prompt engineering
β”‚   β”œβ”€β”€ context.py         # conversation history + rolling summary
β”‚   β”œβ”€β”€ attention.py       # vision reaction decisions
β”‚   β”œβ”€β”€ mood.py            # slow-evolving emotional state
β”‚   └── memory_store.py    # cross-session persistent memory
β”œβ”€β”€ llm/                   # 5 LLM provider adapters
β”œβ”€β”€ tts/                   # 3 TTS provider adapters
β”œβ”€β”€ audio/                 # sounddevice player with alignment safety
β”œβ”€β”€ vision/                # screen capture + change detection + activity classification
β”œβ”€β”€ chat/                  # YouTube, Twitch, Kick monitors
β”œβ”€β”€ avatar/                # VTube Studio WebSocket client
β”œβ”€β”€ dashboard/             # FastAPI + Alpine.js (no build step)
β”œβ”€β”€ profiles/              # saved persona profiles (YAML)
└── scripts/               # setup utilities
Provider Streaming Vision Notes
Groq
βœ… βœ… (Llama-4) Fastest inference. Free tier.
OpenAI
βœ… βœ… (GPT-4o) Strong vision. Premium pricing.
OpenRouter
βœ… βœ… (varies) One key, many models.
Anthropic
βœ… βœ… (Claude 4) Best character/IP recognition.
Gemini
βœ… βœ… (2.5 family) Free tier (50 req/min).
Ollama
βœ… βœ… (llava, etc.) Fully local. No API key.
Provider Streaming Cloning Cost
Fish Audio
βœ… βœ… ~$15/M chars
ElevenLabs
βœ… βœ… ~$30/M chars
Piper
βœ… (local) ❌ $0
  • API keys stored in .env

with restricted permissions (chmod 600

on POSIX) - Dashboard never exposes raw keys β€” only masked previews ( sk-β€’β€’β€’xyz

) - Dashboard binds to 127.0.0.1

only β€” not accessible from the network - Atomic writes prevent .env

corruption - Provider error messages scrubbed of key-shaped strings before display

  • Allowed env variables are hard-coded β€” the UI cannot write arbitrary keys

Do not expose the dashboard to a public network without a reverse proxy with authentication.

Audio becomes static

Hit the reset audio button in the dashboard top bar. If it recurs, check logs β€” usually a TTS provider returning non-PCM data (detected and aborted automatically in most cases).

AI describes generic UI ("I see a YouTube page")

The SKIP escape hatch depends on the model. Smaller models (Llama-4 Scout, Gemini Flash) are worse at following it. Upgrade to Claude Sonnet or GPT-4o for better vision, or set commentary density to sparse

.

AI keeps asking questions to chat

The question throttle is automatic (forces statements after one question-ending). If it persists, raise frequency penalty to 0.5–0.7 in Engine settings.

Avatar mouth doesn't move

Check that the MouthOpen

parameter name matches your model (some use ParamMouthOpen

or MouthOpenY

). Override in Avatar β†’ Parameter mapping.

Avatar mouth moves but shape looks wrong

Viseme lip sync drives ParamMouthForm

for mouth shape (wide ↔ round). If your model uses a different parameter name, update it in Avatar β†’ Parameters β†’ Mouth form. If your model doesn't support mouth form at all, disable "Spectral mouth shape" in the Viseme section β€” lipsync will fall back to volume-only (open/close).

Avatar doesn't blink

Check that your model has EyeOpenLeft

/ EyeOpenRight

parameters (some use ParamEyeLOpen

/ ParamEyeROpen

). Override the parameter names in Avatar config. Blink can be disabled with enable_blink: false

.

Expressions don't fire

Expression slots need to match VTS hotkey names or IDs. If auto-mapping didn't find your hotkeys (naming mismatch), map them manually in the dashboard or set expr_happy

, expr_sad

, etc. in your profile. Use the dashboard's "Discover hotkeys from VTS" to see available names.

TTS returns 401

Verify the key in API Keys β€” the masked preview should match your provider dashboard. Hit "test" to confirm.

What's coming next:

Streaming avatar backend (HeyGen)β€” realistic-looking avatars as an alternative to Live2D** First-run wizard**β€” guided setup that walks you through provider choice β†’ key entry β†’ first stream** Docker image**β€”docker run wallie

with a volume for configCost meterβ€” running spend tally in the live drawer** OBS WebSocket integration**β€” scene switching tied to stream events** Voice cloning UI**β€” upload reference audio, create a voice from the dashboard

If any of these matter to you β€” open an issue, or better yet, a PR.

Issues and PRs welcome. Ground rules:

Code is English-only. Comments, logs, variables β€” all English. UI can be localized.Single pipeline, single history. Don't add parallel generation paths. That road has been walked.Lazy imports for optional deps. Groq users shouldn't needanthropic

installed.- Run python scripts/_import_check.py

before submitting.

MIT. See LICENSE.

Wallie's own code is MIT. The Minecraft Play mode uses several third-party mods, which are installed (and, for convenience, bundled under dist/mods/

) and remain under their own licenses:

Mod License Source
Baritone (pathfinding/mining)
LGPL-3.0

Meteor Client(loads Baritone)https://github.com/MeteorDevelopment/meteor-client** Fabric API**https://github.com/FabricMC/fabric** Fabric **https://github.com/FabricMC/fabric-These mods are used unmodified and distributed as separate jars (mere aggregation); they are the property of their respective authors. Each is freely available at the source links above.

Wallie is built for people who want their AI streamer to feel like a real show, not a tech demo.

Star the repo. Try the $0 path. Tell us what broke.

── more in #artificial-intelligence 4 stories Β· sorted by recency
── more on @wallie 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/show-hn-self-hosted-…] indexed:0 read:18min 2026-07-09 Β· β€”