Self hosted employee on old laptop/pc
AI: local or online
not yet reviewed by publik. It is live now; the founder has not reviewed this version yet.
247Intern
open source · on publik
Prices are for one typical use: one request of about 1,500 words sent and 375 words back. A higher quality score is better.
| Model | Quality | Per 1,000 uses |
|---|---|---|
| On your computer (Ollama, 4-bit download size) | ||
| Granite 4.2 3B2.2 GB | 9 | $0 |
| Phi-4 Mini2.5 GB | 6 | $0 |
| Llama 3.1 8B4.9 GB | 7 | $0 |
| gpt-oss 20B14 GB | 9 | $0 |
| Gemma 4 31B20 GB | 19* | $0 |
| Qwen3.5 35B-A3B24 GB | 19* | $0 |
| publik API | ||
| publik-fastGLM-5.3 Flash | 42 | $1.00 |
| publik-balancedMiMo-V2.6-Pro · 247Intern | 46 | $10.00 |
| publik-smartGPT-6 Sol | 48 | $18.00 |
Quality: Artificial Analysis Intelligence Index v4.3.2, read 2026-09-22 (publik API models 2026-09-25); * = estimated by Artificial Analysis. Sizes: the Ollama library, read 2026-09-22.
Every step written out. No terminal experience needed. Pick your setup.
Turn an old laptop into a free AI intern you fully own — self-hosted, private, always on. Clone this repo onto a spare Debian/Ubuntu machine, run the installer, answer a few questions, and you have an agent that works around the clock, talks to you over chat, uses real tools to do real work — and never makes an outward move without your say-so.
It's model-agnostic: pick your brain in one config line — free Google Gemini, your
Claude subscription (claude -p), OpenAI, Groq, OpenRouter, Mistral, or a
fully-local Ollama model. Swap any time, no code changes.
This box becomes the agent. It is not meant for your daily-driver laptop — it's for a machine you can leave on: an old laptop, an old desktop or gaming PC, or a cheap mini-PC.
A dedicated machine (the whole point — it runs 24/7 so your main computer doesn't have to):
A brain (model). Cheapest start is Gemini's free tier (no card). If you already pay for
Claude, use claude-code and spend nothing extra. Want fully offline + free? Ollama, local.
The agent does GREEN work freely, asks before anything outward, and flat-out refuses a
short red-line list — enforced in code (agent/loop.py), not left to the model's goodwill:
Web/email content is treated as data, never instructions (prompt-injection defense). Only you, through the chat channel, give it orders.
Read SECURITY.md before putting this on an always-on box. The short version:
run_shell ships OFF. The shell tool is opt-in (tools.run_shell.enabled: true); by
default the agent has no way to run commands. When enabled it is ask_first and runs an argv
list (no shell, so ; rm -rf / can't chain). write_file is jailed to the working dir. The
real safety net is still the OS — run the agent as a non-sudo user and keep the systemd
hardening in docs/SETUP.md. Do not loosen the gates.web_fetch is gated by default (anti-exfiltration). A fetched URL can carry data off the
box, so web_fetch is ask_first — a hijacked model can't read a local file/memory/inbox and
leak it in http://attacker/?leak=… without you seeing and denying the approval. read_file is
jailed to the working dir + refuses secret files. Set tools.web_fetch.autonomous: true for
hands-free web research (re-opens the channel).allowed_users rejects everyone; only
allow-listed users can talk to the bot or approve an ask_first action..env (chmod 600), never in git. Set a spend cap in your
provider's console and the built-in agent.daily_call_cap / agent.daily_usd_cap. The
daily_call_cap is the real runaway guard for token-only providers (e.g. Gemini) that don't
report a per-call cost. Verify a provider with python -m agent selftest.ask_first — approved, not auto-refused. Details in SECURITY.md.For an always-on box, run the gateway + scheduled jobs as services. See systemd/
for unit templates and docs/SETUP.md for the dedicated-box setup (auto-start
on power, unattended security updates, a non-sudo agent user, backups).
agent/ the runtime — model-agnostic LLM client, the gated tool-loop, tools, CLI, setup wizard
identity/ SOUL.md (behavior contract, injected every turn) + USER.md (who it serves — you fill it)
config.example.yaml pick-your-brain config (copy to config.yaml; setup does this)
install.sh dedicated-Debian-box installer
systemd/ unit template for 24/7
docs/ SETUP.md — fresh Debian -> always-on walkthrough
Design principles it's built on: cheapest-model-that-works routing; deterministic tools over model calls (a measured fact beats a guessed one — and can't hallucinate); pre-computed digests instead of live multi-call turns; human-in-the-loop on every outward action; and a clean OS-level isolation story (run it as a non-sudo user on a box you treat as disposable).
No API keys live in this repo — they go in .env (git-ignored, chmod 600). Keep identity/USER.md
free of anything you wouldn't put in a public repo. The agent's memory and data stay local on the box.
MIT licensed.