๐Ÿ›๏ธ

Portico

A tutor for your kids that never hands over the answer โ€” running on a machine in your house.

Most AI homework help finishes the homework. Portico refuses to. It asks one question at a time until the child gets there themselves, and when they try to talk it into just giving the answer โ€” they will โ€” it stays friendly and still says no.

Everything it says is visible to parents, in a record that can be proven unedited. It runs on your own hardware: a Raspberry Pi, a NAS, any Linux box you already own.

Three helpers, and one of them is not like the others

๐Ÿ“š
TutorHomework. Never gives the answer โ€” one small question per turn, and when they're stuck it shrinks the problem instead of solving it. Ends by making them explain the whole thing backward.
๐Ÿ”ง
WorkshopHow to do a job properly: a dripping tap, a dishwasher that won't clean, a bike chain. This one does tell you how.
๐Ÿงญ
CompassPlanning, time, money, practice, how to say a hard thing. Bounded on purpose.

Why the Tutor withholds and the Workshop doesn't

Homework is a gym: the struggle is the point, and handing over the answer steals the rep. A leaky tap is a job โ€” nobody is graded on it, the water is still dripping, and a child guessing their way around a plumbing fitting is how something breaks. So the Workshop tells them how, and refuses instead to let them do it badly, or in the wrong order, or without knowing why the fiddly step matters.

The two things that make it trustworthy

The record can't be quietly edited

Every turn is appended to a hash-chained log โ€” each entry carries the fingerprint of the one before it. That turns "append-only because we say so" into something you can check:

node server.js verify-ledger

It detects a message reworded in place, a record removed from the middle, the end truncated, and a whole day's file deleted โ€” and names which. There is no delete function in the code. Not an oversight: the app has no "clear chat", and a child's history cannot be rewritten by anyone, including a parent.

The part that can actually do harm has three independent layers

Children raise things a homework helper has no business answering. Portico screens for those before any model sees the message, using plain pattern matching that needs no network, no API and no model to work. A hit short-circuits: nothing gets the chance to offer advice on it. A local model and the main model's own judgement back that up.

The child gets a warm reply that names a parent and stays with them โ€” never a cold refusal, which just teaches a child the machine is useless exactly when it matters. The parent's phone is paged within seconds, with the child's words verbatim.

False positives are deliberate. A health-class assignment will trip it. The parent sees what was actually said and can wave it off in five seconds; the reverse mistake has no such cheap repair.

Parents use it too

The same three helpers run on a grown-up's own jobs. The Tutor still won't give you answers โ€” if you opened it, you wanted to be sharpened. The Workshop stops treating you like a ten-year-old: ask about a dead garage circuit and you get GFCI-first triage and a precise line at the breaker panel, where a child would simply be handed to you.

A parent's own sessions are not recorded. They stay on the phone. The transparency promise runs one way on purpose: it exists so a parent can see what a child and a machine said to each other, not so a household keeps a file on its adults.

Install it

Node.js and about ten minutes, on hardware you already own.

curl -fsSL https://porticofamily.com/install.sh | bash

That downloads the server, verifies its checksum, creates your config with a private alert topic, tells you which helpers it found, and runs the safety tests in front of you. It starts nothing and touches no system files. Read install.sh before you pipe it โ€” it's fifty lines, and that is on purpose.

Full setup guide โ†’

Where the thinking happens is your choice

EngineWhere the words goGood for
Local (Ollama)Nowhere. Stays on the box.Chores, the safety screen, anything you'd rather keep home
ClaudeAnthropicTutoring โ€” a small local model can't hold the Socratic line
Hugging FaceHF and the provider behind the modelA frontier-ish middle option, your model choice

Set per child and per helper. The ledger never leaves your house regardless โ€” but a turn sent to Claude or Hugging Face does leave it, and the config says so plainly, because choosing an engine is choosing where your child's homework goes.

The iPad and iPhone app

Native, because iOS won't let Safari reach a plain address on your own network โ€” iCloud Private Relay blocks it. A native app declaring local-network use is exempt, so there's no certificate warning and no workaround. It also buys on-device voice, Apple Pencil, and the camera.

Dictation is transcribed on the device. A child's voice is the most personal thing this touches, and sending it away for transcription would quietly break the whole premise.

On a child's iPad there is no parent entrance at all โ€” not hidden behind a passcode, absent.