Skipper is an agentic app platform for your household. It runs on your own hardware, from a Raspberry Pi to a desktop, and helps everyone in the family with goals and projects, reminders, chores, meals and recipes, the calendar, the house and the cars. It remembers what matters across every conversation.
Talk to it from the web desktop, by voice ("Hey Skipper"), from your phone, or over Discord. Your data stays in your own database.
Skipper is built around the way a household actually works: several people, lots of small commitments, and things that fall through the cracks. It plans, organizes, watches and remembers for each person, across every device.
Goals, projects and tasks, reminders, schedules and a to-do list, pulled together into a daily Prioritize view with three focus slots for what matters today.
Every member has their own login, role, reminders, focus and conversation. Parents and kids see what's theirs. "Remind me" means the person who asked.
A family recipe collection with scaling and a cooking mode, plus a meal-idea library you can filter by effort, cuisine and ingredients: "something low-effort that uses potatoes."
Chores rotate across the kids with a morning list and check-off, and bounties let parents post paid jobs that kids complete for credit.
Home maintenance, appliances and insurance; vehicle service history and issues; an item locator for where things are stored; smart-home control through Home Assistant.
Medications with refill reminders, recurring treatments, a medical event journal and lab results with trend history, for everyone in the house.
"Skipper, research the best way to insulate an attic in a cold climate." A while later you get a sourced write-up, filed in your documents and linked to the right project.
Conversations and app records become long-term memory, then get organized into readable documents. The longer you use it, the more it knows about your family.
Reminders fire on time, the project manager checks in on stalled work, and notifications reach you on the web, your phone, Discord, Pushover or email. It stays quiet when there's nothing new.
Each app has its own data, its own screen on the desktop and its own tools the assistant can use, so anything you can click you can also just ask for. These ship with the platform.
Nested goals, projects and tasks with owners, due dates and dependencies. Optional two-way sync with Trello boards.
Three focus slots and a backlog that pulls automatically from tasks, reminders, schedules and to-dos.
One-shot and recurring reminders, plus quick kitchen and pomodoro timers.
Recurring schedules with full repeat rules, shown on one calendar with reminders, tasks and to-dos.
General lists and a "when I have time" to-do list for each person, with gentle nudges.
A markdown editor with AI-assisted revisions, and an idea board with statuses, tags and flowcharts.
Recipes with ingredients, steps, photos, scaling and cooking mode. A meal library to answer "what's for dinner?"
Rotating chores with a daily list for each kid, and a job board where kids earn credit for extra work.
Maintenance tasks, appliances, insurance and home issues in one place.
Home Assistant bridge: lights, switches, sensors and a low-battery finder, by click or by voice.
Vehicles, service records, issues, valuations and periodic condition reports.
Track where physical things are stored, with photos, and search across every app at once.
Medications and refills, treatments, visits, surgeries and lab results with trends.
Current conditions, hourly and 10-day forecasts for your home. No account or key needed.
Connect Gmail and set inbox rules (label, archive, mark read) with a log of everything each rule did.
Organize anything into folders, keep a photo gallery, and see everything that changed across every app in one feed.
Scientific, compound-interest and loan calculators, and a small arcade of games including solitaire.
Save a prompt and a schedule, and Skipper runs it for you: a Monday-morning family summary, a weekly check on the garden.
Report a problem or request a feature from inside the app, see what Skipper is working on in the background, and manage backups, members and settings.
Install more by cloning an app into the apps/ folder and restarting. Or write your own.
Voice is built to feel like talking to someone in the next room. Ask, and you get the shortest useful answer in a calm, everyday tone. No repeating your question back, no offers to do more. Turn the lights off and you hear one word.
A small voice satellite (a Raspberry Pi with a speakerphone, or any PC) or the Android app listens for "Hey Skipper" locally. Nothing goes to the cloud until you say it.
Audio from just before and during the chime is kept, so you can talk straight through it.
Optional speaker identification tells family members apart, so "remind me" and personal data follow the right person.
The satellite is a thin client. The platform holds the memory, the tools and the keys, and runs the conversation with OpenAI's realtime voice models.
If a lookup takes a moment you hear "Checking." Then the answer, and nothing more.
Every integration is optional and off until you add it. They all feed the same assistant and the same memory.
Chat with Skipper in DMs or channels, and get notifications there.
Lights, switches, sensors and scenes, by click, chat or voice.
Keep goals, tasks and checklists in sync with your boards.
Inbox rules on incoming mail, and outbound email for notifications and reports.
Notifications to the Android app or through Pushover.
Web search for chat answers and research jobs.
Automatic off-machine backups of your database.
Print documents and recipes to a real printer on your network.
Reach Skipper from anywhere through Cloudflare Tunnel, Tailscale or your own domain.
Every app opens in the web desktop with chat alongside, so you can click or ask, whichever is faster.
The rest of this page covers the technical side: one mind behind every surface, how apps plug in, how tools are chosen, how memory is built and how background work runs.
Skipper is a single entity with one continuous memory, whether you type on the desktop, speak to a satellite, message it on Discord or tap the phone app. Like a person with a phone at each ear, it talks to each family member individually but is still one mind.
Every message, reminder, nudge and background result is written to a single ordered log in Postgres. Your conversation on the desktop is just a view of that log filtered to you. Nothing said on one surface is lost on another.
The log is also the attention queue. When something needs a response, whether a message from you or an alarm from an app, Skipper picks it up in order. Work for different people runs side by side, but each person's conversation happens one turn at a time, so it never talks over itself.
Every surface and every background job builds its context the same way, from the same log and memory. That's why a proactive nudge knows what you said in chat this morning.
Everything that speaks to the family: chat on every surface and the project manager that checks in on goals. One mouth per conversation.
Longer work Skipper does on its own: research, drafting, working through tasks on goals you've given it. Hands never talk to you directly. When a result is worth sharing, they raise it and the voice tells you.
Background upkeep: digesting conversations into memory, organizing memories into documents and summarizing older history. It never speaks; it keeps what the mind draws on in good shape.
Goals, projects and tasks aren't a passive list. A project manager reviews them on a daily rhythm, looks for work with no date, no owner or no movement, and checks in with the right person. It suggests next steps from what you're already doing and never invents work you didn't ask for.
New installs start with a "Get started with Skipper" goal. The project manager walks you through introducing your family, configuring settings and trying each app, and closes items out as you do them.
Pick an AI provider and model in the web UI during setup. OpenAI is the default and fully tested, with separate tiers for a smart model and a fast model and adjustable reasoning effort. Connectors for Anthropic, Gemini, DeepSeek, Kimi, Qwen, Grok, Mistral, Llama and local models through Ollama are available as experimental options.
Apps don't talk to a model directly. They go through the platform, so switching providers changes every app at once.
Skipper isn't a monolith with features hard-coded in. The platform discovers apps when it starts and wires each one into the assistant, the API, the database and the desktop. The platform never depends on a specific app, and apps talk to each other only through the platform.
Every app lives in apps/<id>/. Most files are optional; the loader picks up whatever is there.
Every app gets its own schema, app_<id>. The loader refuses foreign keys that reach into another app's tables, so apps share data through platform services such as links, events, notifications and memory. If an optional app fails to load, it's marked degraded and the rest of Skipper keeps running.
The same structure is used by the apps that ship with Skipper and by apps in their own repositories, so anyone who can write a manifest and a few Python functions can give their family a new capability.
Handing a model every tool at once makes it slower and more easily confused. Skipper's router reads each message for keywords and entity references, picks the matching tool categories, and hands the model only those tools, along with the matching app's guidance.
Tools are grouped into categories, one or more per app. Each category declares its tools and the phrases that should bring it in. A message that touches two areas ("remind me to buy chicken for Tuesday's dinner") pulls both.
A few meta-tools are always present, so if the assistant needs something outside the current set partway through a turn, it asks for it and keeps going. In a voice session, "open the recipes app" narrows the tools to that app.
Memory isn't a side cache. Conversations, app records and things you ask it to remember all flow into one long-term store, so the next conversation already knows what changed.
"Remember that Sam is allergic to peanuts." Tagged, linked to the people and records it's about, and traceable to the conversation it came from.
When a recipe, service record or reminder changes, a digest of it goes into memory, so "when did we last rotate the tires?" just works.
After each conversation, a background step pulls out the facts worth keeping. It runs after the reply is sent, so you never wait for it.
Memories don't just pile up. A background process reads new memories, sets aside the operational noise, and decides what's worth writing down. It creates and updates readable documents (topic indexes, reference notes, running journals) in a folder tree you can browse in the Folders app.
Recall is hybrid: vector similarity (Postgres + pgvector) finds candidates, then tags, people and linked records narrow them down. Structured data also stays first-class in each app, so it's queryable and visible on screen, not only recalled.
Skipper doesn't only respond; it does work. Research, document revisions, printing, routines and scheduled jobs all run on one engine, whether you started them, the assistant did, or a schedule did.
You ask and go on with your day. When it's done, you get a sourced document filed with the right project, and Skipper lets you know.
The request is split into several targeted search queries.
Web search results are de-duplicated across queries and ranked.
Pages are fetched, stripped of navigation and clutter, and summarized against your question.
The summaries become one sectioned document with citations.
It's filed in your documents, linked to the goal or project, remembered, and you're told it's ready.
Ask for more ("go deeper on vapor barriers and add a section on doing it yourself versus hiring it out") and a revision job runs new searches and rewrites only the sections that need it, instead of starting over.
Small decisions that add up to an assistant people actually want to use every day.
A handful of relevant tools per turn instead of hundreds, so answers are faster and more accurate.
Tools run in-process with next to no overhead.
Fact extraction runs once you already have your answer.
Skipper won't nag about the same thing again until something has changed.
Notifications go to each person's preferred channel and report what was actually delivered.
Internal record IDs stay internal. You see titles and names.
Goals, projects and tasks are ordered by their dependencies, so blockers never sit below the work they block.
Voice keeps the audio from before the chime, so there's no waiting for a beep.
Database and project backups on a schedule, locally or to Google Drive.
When a new version is ready, update from inside Skipper. Database migrations run on their own.
Skipper is open source under the MIT license. Clone it, run one command, and finish setup in your browser.
Skipper sends nothing to us. No telemetry, no crash reports, no version pings. Your data lives in your own Postgres database and goes only to the AI provider you choose and the integrations you turn on.