Readit News logoReadit News
SurceBeats commented on Show HN: HomeDock OS – A browser-based desktop OS to self-host your Docker apps   github.com/BansheeTech/Ho... · Posted by u/SurceBeats
SurceBeats · 12 days ago
Hey HN! We've been building HomeDock OS, a platform to self-host Docker apps with a full desktop-like UI running entirely in the browser.

Version 2.0 introduced exactly that, Prism, a window manager with real multitasking: drag, resize, minimize, and snap windows. It runs on Raspberry Pi, Linux, Mac, or Windows.

On the Drop Zone, files are encrypted with AES-256 GCM and 1.2M PBKDF2 iterations, even on a Pi Zero. App updates use Docker manifest digest comparison, not just tag checking so you can easily update them from the taskbar with a single click.

Happy to answer questions about architecture or design decisions!!!!

SurceBeats commented on Show HN: I built a local AI-powered Ouija board with a fine-tuned 3B model   github.com/SurceBeats/Pla... · Posted by u/SurceBeats
andsoitis · 18 days ago
Thanks
SurceBeats · 17 days ago
You're more than welcome!
SurceBeats commented on Show HN: I built a local AI-powered Ouija board with a fine-tuned 3B model   github.com/SurceBeats/Pla... · Posted by u/SurceBeats
andsoitis · 18 days ago
Thanks for sharing your work.

Do you have writeup (or rough notes) on how you did the model fine-tuning?

SurceBeats · 18 days ago
Sure! No formal writeup but here's the gist, base model was Qwen2.5-3B-Instruct, fast, reliable, low ram specs and most of the times fine on cpu.

Dataset: ~620 Claude-crafted examples, all following the same pattern, a question you'd ask a Ouija board paired with a short, uppercase, cryptic response. Things like "Is anyone there?" "YES.", "Write me a poem" "NO.", "How did you die?" "Ouija: PAIN.". The key was being very very consistent with the output format across all examples.

Method was LoRA fine-tune using HuggingFace Transformers + PEFT. Rank 16, alpha 32, targeting all attention + MLP projections. 3 epochs, lr 2e-4, effective batch size 8. Trained on Apple Silicon (MPS). Loss went from ~3.0 to ~0.17 pretty quickly given how uniform the outputs are.

Baked a system prompt into every training example using Qwen's chat template, basically the rules the "spirit" follows (uppercase only, one-word answers, never elaborate). For deployment I merged the LoRA adapter, quantized to GGUF Q4_K_M via llama.cpp, rruns locally with llama-cpp-python. I'm planning to drop an iOS version too. Honestly the whole thing is more about the dataset design than anything fancy on the training side. 620 consistent examples was enough to completely override the models default chatty behavior.

SurceBeats commented on Show HN: I built a local AI-powered Ouija board with a fine-tuned 3B model   github.com/SurceBeats/Pla... · Posted by u/SurceBeats
SurceBeats · 18 days ago
The workflow is quite simple, you type a question, the planchette moves across the Ouija board spelling the answer letter by letter. The board shakes, glows or flickers depending on the spirit's mood. Runs fully offline using llama-cpp-python. Model auto-downloads from HuggingFace.

You can run it from source or using the Docker Compose, it also has real-time crisis detection, if someone shows signs of distress, a helpline banner appears. Even a fake spirit board shouldn't ignore real pain, I guess. Would love feedback on the UX and the model behavior!

SurceBeats commented on Show HN: Disavow Generator – Open-source tool to defend against negative SEO   github.com/BansheeTech/Di... · Posted by u/SurceBeats
SurceBeats · a month ago
In January someone hit us with ~2K malicious backlinks from AWS instances across 15+ regions, cheap TLD spam domains, and even Blogspot. We built a Python script to automate the disavow file generation, then added a UI and Dockerized it. Full technical writeup with the forensic analysis here: https://dev.to/surcebeats/someone-paid-around-2k-to-destroy-...

The tool parses exports from Ahrefs/SEMrush/Google Search Console, categorizes IPs vs domains, supports whitelisting, tracks new threats across uploads, and generates Google-ready disavow.txt files.

Feedback welcome.

u/SurceBeats

KarmaCake day152June 25, 2025
About
My code seems to work better than my ability to read between lines when talking to people
View Original