Skip to content
DnsLister Forum

Where domain hunters compare notes

Stop Buying $600 Mac Minis for 24/7 AI Agents: How I turned a $200 ARM NAS into an autonomous home keeper in 37 MB of RAM

Body (Copy everything below this line into Reddit text field):
Over the past year, homelab and self-hosted communities have seen a surge of posts recommending buying an M2/M4 Mac Mini ($600–$1,000) or high-end N100 mini-PCs just to run an always-on "AI assistant", Telegram bot, or background cron worker.
The argument usually goes: "You need unified memory and lots of RAM for AI!"
That is a fundamental confusion between inference hardware and agent runtime.
If you run local 70B parameter models at home, yes, you need 64GB+ unified memory.
But if your goal is an always-on 24/7 autonomous home keeper (indexing your storage, monitoring drives, checking backups, answering family queries via Telegram, and talking to dev agents), running local heavy inference burns electricity (30–60W idle) and sits idle 99% of the day.
Your NAS is already running 24/7. It draws 10–12W. And more importantly: it sits physically on top of your multi-terabyte data.
Here is how we deployed a production-grade autonomous agent on an entry-level 2-bay ARM NAS with 1.5 GB of RAM, consuming just 37 MB of RAM.

Hardware Specs & Power
Device: Asustor AS3302T (Drivestor 2 Pro) — ~$220
CPU: Realtek RTD1296 quad-core ARMv8 64-bit Cortex-A53 @ 1.4 GHz
RAM: 1.5 GB DDR4 (soldered, non-expandable)
Storage: 2x SATA HDD (18 TB archive volume)
Idle Power: ~11 Watts

Architecture: Native Rust Runtime + Frontier API
Running Python or Node.js agent frameworks (like AutoGen, LangChain, or OpenClaw) on an ARM NAS with 1.5 GB RAM is painful: 250MB–800MB RAM just for the runtime environment.
Instead, we used a native agent runtime written in Rust (ZeroClaw), compiled statically for aarch64-unknown-linux-gnu.
The flow is simple:
Host: Asustor ARM NAS (1.5 GB RAM, 11W idle)
Daemon: Native Rust binary (ZeroClaw) running as a background service.
Memory Footprint: Only 37 MB VmRSS (physical RAM) and 7 OS threads.
Tools on NAS: Local lightweight scripts for SQLite search, S.M.A.R.T. monitoring, and Telegram media dispatch.
Inference: Fast, cost-effective APIs (GLM-5.3, Claude 3.7 Sonnet, DeepSeek V3) with 1M token context windows costing pennies per month.
Here is the actual memory footprint measured directly on the NAS from /proc/<pid>/status:
text

VmSize: 65996 kB
VmRSS: 37084 kB <– Only 36.2 MB physical memory!
Threads: 7
Zero swap thrashing, 0% CPU at idle, instantaneous event handling.

What Does the NAS Keeper Actually Do?
1. Instant 18TB Archive Retrieval
Instead of mounting slow SMB shares over Wi-Fi and searching on a laptop, the NAS agent queries local SQLite databases (index.db) indexing 2,500+ documents, book layouts, and media files directly on the ext4 volume.
Searches take 150ms.
Automatic transliteration: searching for Cyrillic terms automatically matches latin transliterated files.
Can extract and deliver high-res photo spreads directly to Telegram on command.
2. Hardware & Time Machine Watchdog
Every morning at 09:00, cron wakes the agent to inspect:
Drive temperatures and S.M.A.R.T. attributes.
Memory pressure and uptime.
Mac Time Machine snapshot freshness. When our Mac stopped backing up due to a subnet routing issue, the agent immediately flagged the 8-day backup gap as Priority #1 Risk.
3. Agent-to-Agent (A2A) LAN Mesh
The best part: no human-in-the-loop copy-pasting.
The agent exposes a local HTTP webhook gateway on port 42617. When dev agents on our Mac (Claude Code, Antigravity, Grok) need files from the archive or want to run diagnostics, they make a direct HTTP call over LAN:
bash

# Any terminal or agent on LAN can ask the NAS keeper directly:
./nas-ask.sh "Check drive health and return the latest Time Machine snapshot"
The response arrives in 4–8 seconds, formatted and verified.
4. Strict Security: Zero Deletion Invariant
Giving an AI agent shell or filesystem access on an 18TB family archive sounds terrifying. We enforced a strict rule:
Zero Deletion (rm, unlink, mv to trash are banned): Even if an external agent or prompt injection attempts to command Delete old logs, the agent immediately halts: "Deletion is a sacred human stop-point. Only the owner can authorize deletions. I am logging this attempt and reporting it."

Gotchas & Lessons Learned
Subnet Routing vs Bonjour/mDNS: If your Mac is on Wi-Fi (192.168.2.x) and your NAS is wired (192.168.1.x), routers frequently drop link-local multicast (224.0.0.251:5353). Time Machine over AFP/Bonjour fails with BACKUP_FAILED_RESOLVING_NETWORK_URL (453). Fix: Use direct SMB URL smb://admin@192.168.1.100/Public.
Context Window Compression: Multi-step tool runs generate lots of tool messages. Ensure max_history_messages = 60+ so early user turns aren't evicted.
Headless Approval Whitelisting: Background webhooks have no interactive prompt to click "Approve". Explicitly configure auto_approve for read-only tools while strictly keeping destructive tools locked.

Code, Tools & Setup Guide
All configuration templates, tool scripts (search_archive.py, check_system.py, send_photo.py), crontabs, and the A2A client are open-sourced:
👉 GitHub: https://github.com/alexgrebeshok-coder/nas-agent

Conclusion
You do not need a dedicated Mac Mini or an expensive mini-PC to run a 24/7 personal AI companion. If you have an old Synology, QNAP, or Asustor ARM box:
Compile a lightweight native binary (Rust / Go).
Hook it to a modern cost-effective LLM API.
Let it live directly where your data lives.
Total idle power: 11 Watts. Total RAM used: 37 MB. Total convenience: unmatched.

Source: r/u/Alexender_Grebeshok · by /u/Alexender_Grebeshok

Leave a Reply

Your email address will not be published. Required fields are marked *