Skip to main content

Aptuni

Aptuni

Context, attuned to you.

Personal context · Memory · MCP · Local-first

简体中文 · Apache-2.0 · v0.1.0 pre-alpha

Aptuni gives AI agents the right personal context without giving them everything about you. The more you use it, the better it understands what matters.

You stop re-explaining yourself to every agent. Your agent gets a small, relevant, verifiable slice of who you are for the task at hand, and you keep the whole thing in open files you own.

Status: pre-alpha (Milestone 1). The core runs end to end on supported macOS and Ubuntu 24.04/ext4 systems. Interfaces will still change. See what works now and the roadmap.

Why Aptuni

  • Attunement over accumulation. Agents get the smallest useful context for a task, not a dump of everything stored about you.
  • You own it. Your Profile Vault is plain JSONL/Markdown on your disk. Indexes and memory engines are rebuildable projections, so you never lose yourself when a backend changes.
  • Evidence, not guesses. A document that mentions XGBoost is exposure, not expertise. Every claim keeps its source, time and history.
  • Your switches. Each module (knowledge, experience, preferences…) has separate ingest and expose controls. "Don't tell my agent about my work history" hides it without deleting it.
  • No extra API key required. The default setup needs no Docker, no vector or graph database and no model key. Claude Code or Codex can be the intelligence you already have.

Install with your agent

Install the public package with Python 3.13 and uv:

uv tool install aptuni==0.1.0
aptuni --version

Open this repository in Claude Code or Codex and say:

Read this repository and set up Aptuni for me.

The agent reads AGENTS.md, asks which language you prefer, then walks through what sources you have, how you want to be remembered, and whether cloud models may process your data.

You can drive the same flow yourself. It is two commands, and the first one creates only a private, expiring plan record — no Vault, source, grant, or host bundle:

aptuni setup plan --folder ~/Documents/notes --host claude_code
aptuni setup apply ACTION_ID       # you type APPLY in your own terminal

setup plan prints the recommended components and why, the API keys and setup time, exactly which of your modules an agent will be able to read and which operator receives them, the exact folders it will read, every file it will write and where, and the exact ordered steps — then stops. None of those effects happens until you confirm that one plan, and the confirmation is bound to its digest, so an edited plan can never be applied.

Aptuni writes the agent integration into its own directory and does not modify your host's configuration; you point the host at it yourself. If a step fails, the run stops there and resumes where it left off. aptuni setup cancel ACTION_ID revokes the agent access it granted and tells you exactly what remains — your Vault, sources and evidence are never deleted for you.

60-second manual quickstart

Requires the installed Python 3.13 package above.

aptuni advise                      # a few plain-language questions; changes nothing
aptuni init ~/Aptuni               # create your Profile Vault (or let `setup apply` do it)
aptuni remember "Prefers concise, structured technical explanations." --module preferences
aptuni source add-folder ~/Documents/cv --module experience --role application-materials
aptuni sync SOURCE_ID              # minimized evidence from files you approved
aptuni context "help me prepare for a data science interview" --module experience --evidence --budget 1500

Then connect an agent:

aptuni adapter plan claude --module identity --module preferences --allow-host-model-egress
aptuni adapter apply ACTION_ID     # you confirm in your own terminal

What works today

Area Status
Profile Vault: facts, history, corrections, crash-safe writes, doctor ✅
Module permissions (ingest / expose, independently) ✅
Folder source (Markdown, text, CSV) with incremental sync and provenance ✅
GitHub source, Standard mode (bounded, exact commit provenance) ✅
Bilingual (English + Chinese) local search, rebuildable index ✅
Layered context (L0 identity card → L4 evidence) with a budget ✅
MCP server over local STDIO, permission-checked reads and quarantined memory proposals ✅
Claude Code and Codex adapters ✅
Plugin Advisor, Recipes, English / 简体中文 CLI ✅ preview (aptuni advise)
Verified backup and restore of the canonical Vault ✅
MarginNote 4 source (macOS, direct read-only local sync, native IDs) ✅
Obsidian source and UI, Mem0, hybrid retrieval, Graphiti 🗺 Milestones 2–3

Run aptuni plugin list and aptuni recipe list to see the same picture from the CLI.

How it works

Sources ──► Evidence ──► Profile + Memory ──► Context ──► Agents
(folders,    (minimized,   (temporal facts,    (L0–L4,     (MCP, Claude Code,
 GitHub,      provenance)   your switches)      budgeted)    Codex)
 MarginNote)
  • Profile ≠ Memory ≠ Context. A Profile changes slowly, memory forms quickly, and context is the task-specific slice assembled at runtime.
  • Progressive disclosure. Agents start from a short identity card and ask for more only when a task needs it.
  • Sources change safely. Every sync is an immutable snapshot plus a reviewable delta. A deleted file withdraws evidence; it never silently rewrites history. Ambiguous changes wait for you.

Design decisions live in docs/dev/DECISIONS/, and the product requirements in docs/product/PRD.md.

Recipes

Recipe For Needs
Starter Lite Just make it work nothing extra
Researcher Notes, documents and code as knowledge evidence optional GITHUB_TOKEN
Personal Memory Learn from everyday conversations Milestone 2 (Mem0)
Temporal Memory Relationships that change over time Milestone 3 (Graphiti)

You choose an experience; Aptuni chooses the components. Recipes that are not installable yet are shown with the closest working alternative.

Privacy in one paragraph

Aptuni never scans your machine on its own, and discovering a source does not mean it has permission to read it. Raw conversations are not kept by default. Agents see only modules you expose, within a budget, and the adapter preview tells you exactly what leaves your device (for example, context an agent reads is processed by that agent's model provider). See SECURITY.md and the threat model.

These commands make that concrete:

aptuni privacy status                  # every copy Aptuni manages, and the ones it cannot delete for you
aptuni privacy purge preview <id>      # the exact records and copies a deletion would remove
aptuni privacy purge confirm <action>  # irreversible, and only for that one preview
aptuni privacy purge cancel <action>   # abandon a confirmed purge that deleted nothing

privacy status names external copies plainly — exports you made yourself, your original source files, and transcripts held by an agent's provider — because Aptuni cannot delete those and will not pretend otherwise. The purge receipt reports, per copy, what actually happened.

Backups you can actually restore

aptuni export writes a readable copy of your current Profile. It is for reading, and it cannot be restored. The restorable copy is a backup:

aptuni backup create ~/aptuni-backups/2026-09-20   # a verified copy, outside your Vault
aptuni backup verify ~/aptuni-backups/2026-09-20   # checks it without touching your Vault
aptuni backup list   ~/aptuni-backups              # what you have, and whether each still verifies
aptuni backup restore preview <path>               # exactly what a restore would replace, drop and keep
aptuni backup restore confirm <action>             # only for that one preview

A backup is a complete unencrypted copy of your canonical records, including modules you have hidden, so where you keep it matters. Two things it will not do: it never resurrects a record you purged, on any machine, because deletions travel with your Vault; and it never overwrites a folder that already has files in it.

Contributing

Plugins, recipes, translations and bug reports are welcome. Start with CONTRIBUTING.md. Adding a plugin to the Advisor catalog is one TOML file plus two message lines.

License

Apache-2.0. Third-party notices are in THIRD_PARTY_NOTICES.md.

Metadata

Release files for aptuni 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aptuni 0.1.0
File Size Uploaded Provenance
aptuni-0.1.0.tar.gz 266.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aptuni 0.1.0
File Interpreter ABI Platform
aptuni-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 457.9 kB

Release files / aptuni-0.1.0.tar.gz

Download URL aptuni-0.1.0.tar.gz
Size 266.4 kB
Tags Source
SHA-256 checksum
How to use checksums
88aad7807e770d47a97e9c0e1afdf21bbd9fc37eab9e49c8959687935e36d556
BLAKE2b-256 checksum
How to use checksums
6657cf68b20855d4953132fd9c9a6846bc6e469390049e0c65edef12be3f1131
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / aptuni-0.1.0-py3-none-any.whl

Download URL aptuni-0.1.0-py3-none-any.whl
Size 191.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f73fab2031c7a6562daa6731e628a1cb63e2788a791bb5e54c3e94c82f9c6819
BLAKE2b-256 checksum
How to use checksums
fdf460b3e12d4c4ec0f09d1e0c8b7c29fd1287f48bb041665ce232f12e583b0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for aptuni 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page