Areas we serve

Self-Hosted AIHawk: From Job Agent to Your Own Dot on a VM

If you starred a repo called AIHawk in 2024, you were probably looking at LinkedIn job-application automation going viral on GitHub. If you open that same repo today, the README talks about Dots, QEMU VMs, and an open alternative to OpenAI Dots and Grok Bot. Same maintainer, same star count (now north of 32k), very different ambition.

Jobs_Applier_AI_Agent_AIHawk is Federico Elia's home on GitHub for that journey. The tree is the invisible_dots monorepo: MIT licensed, local-first, no vendor control plane. Each Dot gets a hardware-accelerated Linux VM, persistent disk, patched Firefox browser identities, skills and memory on disk, and permissions you set to allow, ask, or deny. We went deep on the Dot stack in our invisible_dots write-up; this post is for people who land on the AIHawk name first.

What happened to "AIHawk"?

The original AIHawk project was an AI agent aimed at applying to jobs faster: résumé-aware flows, browser automation, the kind of thing that gets attention and then gets questions about platform terms of service. The codebase grew into a broader agent platform. The repo description still mentions being built to reduce obvious bot fingerprints, because the browser stack (invisible_playwright_mcp, C++-level Firefox patches) targets sites that reject headless Chrome, not because Swift Host thinks you should spam job boards.

Upstream's disclaimer is clear: your Dot uses your accounts from your connection; respect site terms and robots.txt. Automated mass applications that misrepresent you can violate both law and employer trust. Legitimate uses look more like fare tracking, invoice downloads, repeat internal admin in browsers you are allowed to use, and research chores you would do yourself if you had the hours.

What you run today (on this repo)

Clone this repository (the README still shows an invisible_dots clone URL in places; the monorepo package here is invisible-dots-monorepo):

  • Control plane on your PC or server: queue, approvals inbox, web UI at http://127.0.0.2:3000, CLI, HTTP API, optional Telegram or WhatsApp.
  • One VM per Dot via QEMU/KVM (Linux) or Windows Hypervisor Platform; idle VMs power off after a timeout and wake for the next task.
  • OpenRouter for models with your API key; reasoning runs inside the Dot's VM.
  • Tasks and automations with priorities, schedules, and crash-safe message handling (accepted work is not lost on restart).
  • MCP servers on the Dot's machine, same pattern as Claude Code, secrets kept out of shared config.

Example prompts from upstream: open a named browser identity and read a page title; nightly fare CSV updates; log into a shop identity and file invoices where you already have access.

Why self-host?

No rented Dot. OpenAI Dots, Grok Bot, and similar products keep the computer and memory on the vendor side. Here the golden VM image downloads from CI; everything else builds on your hardware. No telemetry channel in the product story.

Approvals on your network. "Ask" permissions land in an inbox that survives restarts. That is the right default before a agent can shell, edit files, or post through a browser.

Data residency. For Canadian teams documenting where agent files and browser sessions live, a KVM-capable box in Beauharnois or Toronto beats routing employee workflows through a US agent SaaS you cannot audit.

Honest limits. Alpha software. macOS hosts are unsupported. You need nested virtualization for QEMU on a VPS; many cheap cloud plans do not expose KVM to guests. Datacenter IPs still get challenged on consumer sites even with a stealth browser. Budget roughly 4 GB RAM per awake Dot plus browser tabs, and tens of gigabytes of disk per agent over time.

Quick start on Ubuntu 24.04

curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs git
sudo snap install go --classic

git clone https://github.com/feder-cr/Jobs_Applier_AI_Agent_AIHawk
cd Jobs_Applier_AI_Agent_AIHawk
npm ci && npm run build --workspace @invisible-dots/cli
node apps/cli/dist/invisible-dots.mjs setup --all
node apps/cli/dist/invisible-dots.mjs server

setup --all installs QEMU, enables KVM, and builds or downloads Dot images. Paste an OpenRouter key in the UI, create a Dot, start with deny-heavy permissions and widen slowly.

Who should look at AIHawk / invisible_dots

Good fit: builders who want a persistent "computer use" agent without a monthly Dot subscription; teams automating allowed browser workflows with human approval gates; homelabbers with KVM and RAM to spare.

Skip it: shared hosting without virt; anyone who needs a five-minute Docker-only chat UI; job seekers looking for a fire-and-forget apply-to-everything bot (wrong tool, wrong ethics, and platforms fight back).

For a thinner agent without a full VM per task, see our nanobot post. invisible_dots credits nanobot in its engine lineage.

Hosting in Canada

Always-on Dots belong on bare metal or a VPS that advertises nested KVM, with TLS and auth if you expose Telegram webhooks or the web UI beyond localhost. Swift Host can size RAM and disk for how many Dots you expect awake at once.

Talk with Swift Host if you want a Canadian box with nested virt and backup policy for ~/.invisible-dots. We are in St. Albert and actually answer the phone.

Tags:
  • AIHawk
  • invisible_dots
  • AI Agents
  • Self-Hosted
  • Browser Automation

Need Help With Your Hosting?

Tell us about your application — we respond within 1 hour with honest recommendations.