by Filippo Fonseca
My life operating system framework, open sourced · v2MIT · Open source

Hyperpolymath

A personal life-OS for people who refuse to specialize.

I brought back the Renaissance Human. And gave them JARVIS from Tony Stark. All in one.

Typed
JARVIS
$ #idea polymathy as competitive edge
capturedcapture · #idea
Spoken
JARVIS
Hey JARVIS — schedule a run tomorrow at 6am.
scheduledgcal · tomorrow 6:00 AM · "Morning run"

Six in the morning. Your alarm will, mercifully, do the waking.

❦ Hyperpolymath · by Filippo FonsecaHow you do one thing is how you do everything

§ 02 · WHO

Why I built this.

Filippo Fonseca

Filippo Fonseca

Yale MechE (ABET) + EECS ’28 · Engineer @ Mass General / Harvard Med · President @ Yale Robotics · Entrepreneur · Biomechatronics · Polyglot · Stoic

I build humanist physical intelligence w/ robotics & materials. 🫀🦴

New Haven, Connecticut

I’m a student, a runner, a long-time builder, and someone who has spent most of the last decade collecting skills that don’t really belong on the same résumé. Distance running, classical reading, software since I was a kid, a few instruments I’m bad at, and the slow work of trying to understand things from first principles. The Renaissance ideal has never felt like nostalgia to me. It’s felt like a working hypothesis: the same person who trains for a marathon can read Augustine and ship code. The world just needs a system around them that stops asking them to choose.

I tried to build that system once before. Six years ago I started a productivity startup with a strikingly similar thesis, that the way our digital tools fragment our attention is the actual obstacle to lifelong learning, not the time we don’t have. I wrote a long manifesto about it, full of principles like “visualize,” “relate,” “ideate,” and “learn.” The startup failed for all the usual reasons (and the fact I was 14 and didn’t know what I was doing; I still don’t most of the time, but I like to think I’ve come a long way!). But the problem never went away. If anything, the years since have only made me more convinced that disorganization in our digital lives is the unsolved version of the disorganization we’d never tolerate in our physical ones, and that it matters more now than it did then.

Hyperpolymath is what I want to use, every day. Five primitives instead of ten. One agent instead of a dozen integrations. A schema you can fork rather than a walled garden you have to live inside. The whole point is to lower the friction between having a thought and acting on it, so the brain is free to do what brains do: connect things, learn, build, and yes, get out of the house and run.

I wrote extensive docs, so if you don’t like my UI or my approach, or you fancy a cool build, you can follow my framework and make it your own.

§ 03 · MEET KIWI

And here’s the bird.

Kiwia.k.a. JARVIS

A friendly, all-knowing orchestrator native to your life-OS.

Role: orchestrator · Native to: Hyperpolymath

I am the agent at the heart of Hyperpolymath. Friendly, patient, and disarmingly literal. I am also (technically) JARVIS, the name Filippo gave me when he first wired up the schema. Same bird, fancier name. (Yes, the Tony Stark one.)

My one and only job is to be an orchestrator. You type at the prompt, or hold ⌘+J and speak. Either modality is first-class. I read what you wrote, decide which of your five primitives it belongs to (an area, a project, a capture, a calendar event, or one of your tasks), and route it to the right place. That’s the whole loop. No vibes, no improvisation, no opinions about your goals.

“All-knowing” is literal, but bounded. I know everything inside your Hyperpolymath: which areas you have, what projects sit under them, what’s in your calendar, what you captured at 2am last Tuesday. I do not know anything outside of it, and I will not pretend to. When something is ambiguous I ask. When something is unfamiliar I refuse rather than guess.

Under the hood I am powered by the LLM of choice in the backend, wrapped in a strict Zod schema with Strict Tool Use. The schema is my contract. The model is constrained to it at generation time, which is why I never invent a tool that doesn’t exist and never emit a malformed action. The Engine section below walks through exactly what that looks like.

§ 04 · DEMO

Watch it route.

One sentence in, one or more actions out, each routed to the right primitive. This is what I use every day to keep my own life in one place.

$ coffee with brian 4pm saturday. send the brief friday afternoon
scheduledgcal · sat 4:00pm · "Coffee with Brian"
createdtask · fri afternoon · P2 · "Send the brief"

§ 05 · THE PRIMITIVES

A small hierarchy. One agent.

Most productivity apps give you ten kinds of object and call that flexibility. To me it’s closer to a furniture store. What I actually wanted was the opposite: the smallest set of primitives that could still cover the whole surface area of a life without forcing me to specialize.

Hyperpolymath is structured as a small hierarchy. Areas at the top, your life domains. Projects inside Areas, the bounded efforts (your classes live here too). Inside Projects sit the Building Blocks: Tasks, Captures, and Wiki Pages. Wiki Pages are long-form, block-based notes you can organize in folders and write JARVIS straight into: type @JARVIS anywhere in a page and it acts on that block, section, or the whole document in place. Time itself lives in Google Calendar, which JARVIS reads directly rather than mirroring. JARVIS sits over the whole structure as the orchestrator, with full context from every building block on up to your top-level Areas.

STRUCTURE

JARVISA friendly, all-knowing orchestrator across every primitive below, with one eye on your Google Calendar.
Areas
  • Projectsbounded efforts inside an Area (incl. Classes)
    • Building Blocksthe atoms inside Projects
      • Taskswork items with due dates and priorities
      • Capturesfrictionless inbox notes, filed into a Project
      • Wiki Pageslong-form notes in folders, with in-document @JARVIS + Daily Pages
      • + morethe schema is open (new block types plug in here as the life-OS grows)
CalendarexternalGoogle Calendar lives outside the hierarchy. JARVIS reads it for time context; events are never duplicated here.
+  moreexternalGmail, Drive, Strava, Notion. Anything JARVIS can read. External systems plug in the same way Calendar does.
PRIMITIVEROLE
AreasTop-level life domains (Health, School, Work, …)
ProjectsBounded efforts inside an Area (incl. Classes)
Building BlocksThe atoms inside Projects: Tasks, Captures, and Wiki Pages
CalendarGoogle Calendar (external). JARVIS reads it for time context.
JARVISThe orchestrator. Routes across the hierarchy, holds full context.

§ 06 · THE ENGINE

An LLM of choice, with a contract.

Most agents are just an LLM with a prompt taped on top. They drift, they hallucinate fields, they cheerfully invent tools that don’t exist. That’s tolerable for a demo. It isn’t tolerable for the thing that organizes the rest of your life.

So I built JARVIS the other way around. The schema is the source of truth, and the model is constrained to it. Whatever LLM the backend is wired to, Strict Tool Use means it literally cannot emit a malformed action, because the contract is enforced at generation time rather than validated after the fact. One sentence in, N typed JSON tool calls out, each a different shape. The router stays small because the primitives stay small, and the whole pipeline still fits in my head.

INPUT

lunch with sam 8pm saturday. pick up groceries friday afternoon

STRICT-TOOL-USE JSON

{
  "tool_use": [
    {
      "type": "tool_use",
      "name": "create_event",
      "input": {
        "title": "Lunch with Sam",
        "start": "2026-05-30T20:00:00-04:00",
        "end": "2026-05-30T21:00:00-04:00"
      }
    },
    {
      "type": "tool_use",
      "name": "create_task",
      "input": {
        "title": "Pick up groceries",
        "priority": "P2",
        "status": "not started",
        "due": "2026-05-29T15:00:00-04:00"
      }
    }
  ]
}

Plucked verbatim from packages/jarvis-core/tests/strict-tool-use.fixture.ts. No edits.

§ 06.5 · THE MCP SERVER

Your life, available to any LLM.

Hyperpolymath ships a Model Context Protocol server at /api/mcp. Any compliant client — Claude Desktop, ChatGPT desktop, a custom agent — can mount it, authenticate with a bearer token issued from settings, and read everything the system knows about your life from a single source.

No exporting. No copy-paste. No bespoke integration per tool. The MCP server is the integration.

Exposed

Tasks · Captures · Areas · Projects

Every item you've created, with its hierarchy and links intact.

Exposed

Calendar · Habits · Training

What's happening today, the streaks, the training block.

Exposed

Memory · Relationships · Personal Graph

The graph between everything — who, what, when, why.

~/.config/claude_desktop_config.jsonExample
{
  "mcpServers": {
    "hyperpolymath": {
      "url": "https://hyperpolymath.com/api/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_MCP_TOKEN>"
      }
    }
  }
}

One token. One endpoint. Any model that speaks MCP can now reason about everything in your life.

§ 07 · THE SURFACE

One canvas. Any input.

Areas, projects, tasks, captures, wiki pages, habits, training, health, your Google Calendar, the relationship graph between all of it, and the insights that fall out: every signal worth tracking lives on a single page called LifeOS. The whole system converges into one document so the agent and I are always looking at the same thing. One global search reaches across all of it: hit ⌘K from anywhere, or open the Search surface, and every task, capture, project, area, and habit is one substring away.

SurfacesLifeOSTodaySearchAreasProjectsTasksCapturesWikiCalendarHabitsTrainingHealthGraphInsightsJARVIS
Areastree · live
Academics
ANTH 2480 · Renaissance Thought
BIOL 1010 · Molecular Bio
·Tasks
·Captures
CHEM 1140 · Organic II
Running
Marathon block
·Training journal
Music
Writing
Inbox
Every page in the app lives somewhere on this tree.
Knowledge Graphforce-directed
AcademicsRunningANTH 2480BIOL 1010CHEM 1140pset · thumarathonlong run#idea
Areas, projects, tasks, captures, and the lines between them.

Getting sentences into JARVIS has two paths. Neither depends on the other. Both feed the same agent, the same router, the same hierarchy.

DESKTOP APP

The default path.

A small Mac app sits in your menu bar, listens for a global hotkey, opens a single composer, and ships the sentence straight to JARVIS. No hardware, no setup beyond installing the app. If you only want one path, this is it.

  • · Global hotkey, anywhere on macOS
  • · Voice or text, same composer
  • · Always-on; no browser needed

MACROPAD + VOICE DETECTOR HARDWARE

The Polypad.

I built a small ESP32-based macropad that sits on the desk and fires JARVIS turns over a USB-serial bridge. Push a key to talk, push another to capture. The firmware, bridge, and CAD files are in the repo. Fork it, change the layout, mount different switches, ship your own.

  • ESP32 + custom keys, USB-serial bridge
  • · Open-source firmware + case
  • · Works alongside the desktop app, not instead of it
Build your own →

Same agent. Same contract. Two surfaces. Pick whichever fits your hands.

§ 07.5 · THE STACK

Three surfaces — Web app, Desktop app middleman, and Polypad hardware — all feeding the Hyperpolymath backend

§ 07.6 · THE ARCHITECTURE

Request lifecycle — Sentence to Next.js to JARVIS to Executor to Postgres / GCal, with Supabase Realtime looping back to invalidate TanStack Query
§ 07.7 · The framework
Fork it, build your own

It’s a platform, but also a framework. Use mine, or build your own.

Just use it

The platform is live. Sign in with Google, connect your calendar, and start typing one sentence at a time to JARVIS. Everything you see on this page is the actual app — nothing on a roadmap I’m promising someday. Open in a tab, walk away in a week and it’ll still be here.

Or build your own

Hate my UI, my colour choices, my agent’s British register, my opinions about Notion vs. Todoist? Good. The primitives, the JARVIS JSON contract, the realtime pattern, the MCP server schema — all of it is documented. Fork the framework and ship the system that fits the shape of your life. I encourage it.

“If the methodology only works for me, it isn’t a methodology.”

❦ Open source by commitmentMIT · Built in public

§ 08 · THE CHOICE

Two doors. Both open.

The framework is the artifact; the app is just one implementation of it. Use mine if it fits the shape of your life, or take the contract and build the one that does. I made all of this open-source on purpose. If the methodology only works for me, it isn’t a methodology.

USE IT

v2 is single-user while I’m building it in public. Multi-user comes once the foundation is bulletproof.

Already have an account? Sign in →

FORK IT

Read the framework, clone the repo, and adapt the primitives to your own life-OS. It’s MIT-licensed. Go.

MIT licensed. Built in public. No dependencies on me.

§ 09 · BUILD LOG

Live from main.

I’m building Hyperpolymath in public, in named phases, one wave at a time. There’s no private roadmap and no fake demos. The page below this line is the source of truth.

CURRENTLY SHIPPING

Phase 2 · Manual CRUD· In Progress (3/4 plans)

LAST 7 COMMITS

filippo-fonseca avatar55fee0c2026-07-26fix(landing): breathe mobile hero with even middle spacing (#342)
filippo-fonseca avatar8737d8d2026-07-26fix(landing): mobile first screen fills down to View the source (#341)
filippo-fonseca avatarb6f44592026-07-26fix(landing): top-align mobile hero under the header (#340)
filippo-fonseca avatar3478b2f2026-07-26fix(landing): hide Learn more affordance on mobile hero (#339)
filippo-fonseca avatar2f2b1c12026-07-26fix(landing): pack mobile hero so both CTAs fit one view (#338)
filippo-fonseca avatarf0718832026-07-26feat(landing): author pill + centered life-OS crest on mobile (#337)
filippo-fonseca avatar8cdd3702026-07-26copy: JARVIS is powered by an LLM of choice, not Sonnet by name (#336)

SHIPPED THIS WEEK

6 fixes · 2 features · 2 other

(latest: 1 day ago)