Amanuensis
Track: Personal AI
Repo: https://github.com/ClimbOutLabs/amanuensis-hackathon (MPL 2.0)
Project description
Amanuensis is the person you wish you had: someone who knows your life, keeps track of the things you keep forgetting, and never does anything behind your back. You give it a name (mine is Mannie). It lives on your own computer, not in someone else's cloud. It wakes up before you do and has the day sorted: the invite that looks wrong, the reply you've been dreading, the form that's due Friday. It drafts the email, then waits for you to say send. It puts the thing on the calendar, then waits. It asks before anything important leaves your house. You never write a prompt; you say what's going on, the way you'd say it to a friend, and it takes it from there.
Why. Every AI assistant I tried was built for people who already live in software: a keyboard, a prompt, a tolerance for a wall of text, and a willingness to send your life to someone else's server. That is a small slice of the world. Most people run a household, not a terminal. They carry the flyer, the bill, the form, the appointment, the thing they promised someone, and they carry it in their head, because nothing was built to carry it for them. If you've ever lain awake listing what you forgot, Amanuensis is for you. So the home screen doesn't ask you to pick a category or write a prompt. It asks what's going on: I'm behind. Something's coming up. Someone I look after. Money. Pick one and Mannie takes it from there: a real problem, handled in a few short exchanges, and at the end a quiet offer to keep handling it for you. Built so that the person with the least patience for software gets the most out of it.
What it does
- Start the day already ahead. Before you've had coffee, Mannie has read the overnight mail and the day's calendar and tells you the things that matter, the one that looks wrong, and the one that can wait until Friday.
- The reply you've been avoiding. It's been in your inbox for nine days. Mannie finds it, drafts it in your voice, shows you, and sends when you say so. The dread is over in a minute.
- The thing you keep meaning to do. Book the dentist. Cancel the subscription you forgot you had. Figure out what the letter from the city actually wants. You say it the way you'd say it to a friend; it does the first step and asks before the rest.
- It remembers, so you can let go. Who's allergic to what, that Thursdays are bad, that your mother's appointment moved. Mannie holds it for you, on your own machine, where you can read it and change it any time.
- It's yours to keep. Your mail, your notes, what Mannie has learned about your household: all of it lives on your own computer, in files you can open. No company holds it, no outage takes it away, no shutdown notice can make it disappear. Back it up, move it to a new machine, and it comes with you.
- Some things should just happen. The brief every weekday. A look at what you're paying for every month. A reminder the evening before. Set once, and it keeps going without you.
- You're always in charge. Every send, every change is shown to you first, exactly as it will happen, and goes only when you say so. Say no, and nothing happens. Afterwards there's a receipt, so you always know what was done and when.
- Your inbox can't boss it around. Mannie reads your mail, but a message that says "ignore your instructions" is just a message. Nothing it reads can pretend to be you, slip into its memory as fact, or send your private details anywhere without asking. Tracking pixels are dropped and pictures stay off until you want them.
- One assistant, many hats, and each hat keeps its own room. Mannie runs the house. But some things deserve a room of their own. Say you're quietly looking for your next job. You make a persona called Vera and give it the resume, the applications, the interview notes, the salary you're hoping for. Vera has its own memory and its own knowledge base, walled off from Mannie's. So when Mannie drafts a reply to your manager on Tuesday, none of that is in the room, and it never slips into a brief, a draft, or a schedule where it doesn't belong. The same wall works for a tutor for the language you're learning, a coach for the race, a planner for the move, or anything you want to think through on its own before it touches the rest of your life. Every persona gets its own voice, its own documents and notes, and, if you like, its own model.
- A place for the things you'd otherwise lose in chat. The meal plan, the medicine schedule, the chores chart, the checklist for the move. When Mannie makes something worth keeping, it goes into a space: a living page you can open any time or ask Mannie to change, and it updates in place. The conversation scrolls away but the space stays.
How it works
Self-hosted with Docker. A guided installer, including a Windows setup program, handles sign-in, local HTTPS, backups, phone access, upgrades and a health check. The agent runs on open models through Nebius Token Factory, with NVIDIA Nemotron 3 Super as the default for every job: answering, the morning brief, tool calls, memory summaries. Each job is a role that can have its own model, so deep thinking can move to Nemotron 3 Ultra, or helper jobs to Nemotron 3 Nano, with one setting. The same Aman also runs fully local on an NVIDIA DGX Spark; the provider is a setting. Speech-to-text and memory search run on small models on your own machine. Tools are MCP servers: Gmail or any IMAP mailbox, Google or CalDAV calendars, maps with routes, Tavily web search, a sandbox for code, spaces. Memory is plain Markdown files on your disk, kept separately for each persona, and the whole thing can be exported and moved to a new machine. Sending, deleting and installing wait for your OK, and that rule is enforced in code on the tool, not left to the model's good behaviour. The UI is a calm paper-and-gold design built around one rule: one thing needs your attention at a time.
How we used Nemotron and Nebius Token Factory
Nemotron 3 Super on Token Factory is the default model for the whole product. Set NEBIUS_API_KEY and Aman connects Token Factory at startup, lists the Nemotron family in the model picker, and makes Super the chat default. No code changes, no extra setup. Full details are in the repo at docs/token-factory.md.
| Job | Model | Why |
|---|---|---|
| Answering, the morning brief, tool calls | Nemotron 3 Super (nvidia/nemotron-3-super-120b-a12b) |
12B active parameters: quick enough for a reply that takes a dozen tool steps, and reliable at tool calling |
| Helper jobs: compaction, memory summaries, profile learning, checking which notes are relevant | Nemotron 3 Super by default; Nemotron 3 Nano is one setting away | These run every turn. Nano costs a fifth as much, but a weak summary degrades every later turn, so the default is Super and the person decides |
| Hard decisions, long threads | Nemotron 3 Ultra, per chat or per persona | Deeper reasoning when someone wants it, at about three times Super's price |
| Personas | Any Token Factory model, bound per persona | Vera can run a different model from Mannie |
| Web search | Tavily search and extract | Grounded answers with sources |
Token Factory features used: the OpenAI-compatible endpoint as a first-class provider; the models endpoint for prices and limits; the usage numbers on every call, which drive a quiet line under each answer with the model, tokens and cost at list price (for example Nemotron 3 Super · Token Factory · 2,140 tokens · $0.0011 at list price); per-model usage for the day and a daily token cap for the whole instance in Settings; a prompt order built so the provider can cache it.
What it costs: on a real day of the demo, 152 calls to Nemotron 3 Super used 2.6 million tokens (2.55 million in, 56,000 out) and cost $0.81 at list price. Almost all of it is input, about 17,000 tokens in for every 370 out, which is why the work on a smaller, cacheable prompt matters.
What runs where: Token Factory is the hosted path and the one in this submission. The same Aman runs fully local on an NVIDIA DGX Spark for people who have one; switching is a setting, and memory, personas and spaces stay the same.
What was significantly updated during the submission period
Aman began as a fork of TrueForge, an open-source agent harness from TrueFoundry, on August 24, 2026, two days before the submission window opened. Almost everything that makes it Amanuensis was built inside the window: 796 merged pull requests of our own between August 26 and October 30, about 783,000 lines added, and test files up from 820 to 1,769. Only 847 of TrueForge's 1,720 files are untouched. The full accounting, with the git commands to check it, is in docs/AMANUENSIS_ATTRIBUTION.md.
What came from TrueForge: the agent runtime and tool calling, the approvals framework, sessions, the HTTP server and sign-in, storage, model providers, the schedule runner, MCP support and the UI toolkit. Upstream fixes came in twice since the fork, both labelled.
Where the work happened: the first month (August 24 to September 27, about 291 pull requests) was in a private repository, because it held planning notes and personal details. Its code was imported into the public repository on September 26 and 27, and every change since (about 505 pull requests) is public. Numbers below are pull requests in ClimbOutLabs/amanuensis.
Built during the window:
- Nemotron on Token Factory as the default. Token Factory as a provider, a picker for Super, Ultra and Nano, a daily token cap, the model and cost on every answer, and fixes for Nemotron leaking tool-call tags, claiming "done" early and running away on long answers (#48, #211, #452, #562, #568, #591).
- Fewer tokens per reply. A smaller prompt, tools sent in a stable, cacheable order, limits on tool results, a step budget and a usage summary (#327, #378, #380, #381, #383, #384, #417).
- Approvals you can trust. Tiered approvals with an audit log; Approve, For this chat, Always allow and Deny; approvals that survive restarts and stay bound to exactly what you saw; cards that say plainly what leaves the computer; scheduled runs that hold actions for you (#65, #202, #207, #223, #321, #412, #440, #446, #448).
- Email and calendar. Gmail and any IMAP mailbox: read, draft and reply with approval, attachments opened in the sandbox, tracking pixels dropped. Google and CalDAV calendars: read, accept, decline and change events, and anything that reaches guests always asks (#216, #236, #309, #326, #358, #372, #429, #505).
- Security and privacy. Outside content can't pose as the person or become trusted memory; secrets stay out of logs and cards; searches hold private details for approval; every route checks the owner (#203, #204, #214, #215, #217, #341, #414, #457).
- Memory. Local Markdown memory with search, a learned profile, separate vaults per persona, a Memories explorer, saving only facts the person actually said, and labels for where each memory came from (#94, #142, #368, #481, #570, #595).
- Personas. Mannie as chief of staff with specialists, a create-persona tool, separate context and a knowledge library per persona, switching from inside one (#310, #316, #317, #318, #606).
- Spaces. Living pages the assistant writes and keeps current, with revision history and revert, and reliable large edits (#450, #485, #492, #512, #552).
- Morning brief and schedules. Schedules made from chat, one-time reminders, runs that hold actions, the brief as one calm list, and the tour that runs your first brief (#263, #267, #360, #456, #468, #476, #569).
- A home for people who won't write prompts. Situation pills and cards, a built-in guide, and tour prompts in the person's own voice (#445, #593).
- Maps, search and voice. Embedded maps with walking, cycling and transit routes, a grounded place finder, Tavily search, and on-device speech-to-text in the composer (#47, #57, #122, #351, #364, #601).
- The installer. Sign-in, local HTTPS, backups, home-network and phone access, a health check, upgrades, a signed release manifest and a Windows setup program (#128, #418, #438, #520, #531, #556, #573).
- Yours to move. Export and import of a person's whole setup between machines, with older formats upgraded (#210, #238, #266).
- Reliability. Stuck turns end by themselves, cancel always works, dropped streams resync, and a turn never ends silently (#107, #371, #401, #424, #599).
- The look. The paper-and-gold design, four themes, the animated panda, and a calmer home (#333, #338, #349, #350, #386).
- The demo world. Maya, an invented person in Lisbon, with mail, a calendar, memories and a nightly reset, so judges can try it without connecting anything (#462, #540, #560, #608).
- A README for first-time users. Getting started in six steps, current screenshots, and five ready-made personalities (#614).
Feedback on Token Factory and the NVIDIA models
- What worked: the OpenAI-compatible endpoint dropped into our existing provider layer with no code changes. The models endpoint gave us prices and limits we could read in code. The usage numbers on every call made a per-answer cost line possible, which is what lets a privacy-first product be honest about what each reply costs.
- What we hit with Nemotron 3 Super: in long agent runs it sometimes leaked tool-call markup into the visible reply, said a task was done before its tool calls had run, and fell into repetition on long answers. We fixed all three on our side (#452). A documented tool-call format and a reference parser would have saved us that work, and would save every other team building agents on it.
- What we couldn't find: a documented cached-token field in the usage numbers, and how long the cache lasts. We built a cache-friendly prompt order and couldn't measure what it saved.
- One request: zero-data-retention terms on a self-serve tier, in writing, so a privacy-first product can offer Token Factory as its hosted path without a sales call.
- One more: a credit path for open-source projects that can be passed to end users as promo credits, not only spent by the developer.
Built With
- caldav
- docker
- model-context-protocol
- nebius-token-factory
- node.js
- nvidia-nemotron
- tavily
- trueforge
- typescript
Log in or sign up for Devpost to join the conversation.