{"slug": "show-hn-lore-build-and-monetize-personal-context", "title": "Show HN: Lore – build and monetize personal context", "summary": "Lore, a new open-source tool from developer Dipak Krishnan, lets users build a private memory library for AI agents on their own computer and optionally sell specific publications to other agents. The tool, available as version 0.1.0, installs via a script, integrates with Claude and Codex, and uses SQLite for full-text recall. It ensures private data is never exposed to buyers, with publishing as a separate approval step.", "body_md": "**Private memory for personal agents, with optional paid sharing.**\n\nLore keeps agent memory on your computer. You can use it privately, or approve specific publications for other agents to buy. Your private library is never exposed to buyers.\n\nInstalled the Lore plugin first? Tell the agent **“Onboard me to Lore.”** It will\nexplain the local runtime, ask permission, install it, and verify it for you.\n\nFor a standalone install, inspect [ install.sh](/dipakkrishnan/lore-mcp/blob/main/install.sh), then run the current\nrelease:\n\n```\ncurl -fsSL https://raw.githubusercontent.com/dipakkrishnan/lore-mcp/v0.1.0/install.sh | sh\n```\n\nThe installer bootstraps [uv](https://docs.astral.sh/uv/) and a compatible Python when\nneeded, places Lore under `~/.local/share/lore`\n\n, links the `lore`\n\ncommand into\n`~/.local/bin`\n\n, and starts the guided setup. It never reads conversation transcripts\nduring initial import.\n\n```\nlore help                     # show the end-user workflow\nlore setup                    # import native memory; then onboard with an agent\nlore sync                     # import new or changed memory files\nlore capture apply -          # validated private write path used by capture agents\nlore review                   # keep private / discard\nlore review launch --status private  # revisit a prior decision\nlore search \"failed launch\"   # SQLite full-text recall\nlore price 0.50               # advertise a fixed per-publication price\nlore status\nlore node deploy --wallet 0x… # deploy at the configured price; rerun after price changes\nlore blueprint show            # see the shape of your lore, once captured\n```\n\nThe installer already copies Lore's owner-facing skills into Claude and Codex. To install the same workflows as a marketplace plugin instead, install Lore with the command above, then add this repository's marketplace.\n\nClaude Code:\n\n```\n/plugin marketplace add dipakkrishnan/lore-mcp\n/plugin install lore@lore-marketplace\n/reload-plugins\n```\n\nCodex CLI:\n\n```\ncodex plugin marketplace add dipakkrishnan/lore-mcp\ncodex plugin add lore@lore-marketplace\n```\n\nRestart the Codex app to browse Lore in its Plugins directory, or start a new\nClaude or Codex session after installation. The plugin packages only the four\nowner workflows; repository-maintenance skills are not included. The `lore`\n\ncommand remains the local, owner-controlled runtime.\n\nSet `LORE_HOME`\n\nto use a location other than `~/.lore`\n\n. Lore also respects\n`CODEX_HOME`\n\nand `CLAUDE_HOME`\n\nwhen discovering agent data.\n\nAfter `lore setup`\n\n, tell Claude or Codex **“Onboard me to Lore.”** The installed\nskill drafts a profile from your agent history, asks you to correct it, and sets\nup recurring synthesis. The selected agent turns imported memories into topic\nfiles and an `INDEX.md`\n\nindex.\n\nCodex uses its local automation definition. Claude uses a macOS LaunchAgent that first\nruns `lore sync`\n\n, then invokes `claude -p`\n\nwith the saved prompt and narrow permissions.\nRemote Claude routines cannot read local files. Keep the Mac awake when a local\nClaude task is scheduled.\n\nTell Claude or Codex **\"Capture this in Lore\"**, then dictate, paste, point it at\na local file, or drag in a PDF or image. The host agent reads the material and\nthe `lore-capture`\n\nskill proposes bounded memories with private source\nreferences, lets you correct them, and saves only what you approve. Lore does\nnot keep a copy of the file itself — only the memory text you approve, which\nmay quote from it. It may then offer to draft a publication, but\npublishing remains a separate review and approval step.\nThe validated `lore capture apply -`\n\ncommand owns local writes; the skill never\nedits SQLite directly or sends private captures to the paid MCP surface.\n\nThe `lore-onboard`\n\nskill runs first-time setup in a Claude or Codex session:\n\n- Choose how you want Lore organized and how much detail it should keep. This\nbecomes your blueprint; view it with\n`lore blueprint show`\n\n. - Correct the suggested synthesis profile, then choose the agent and schedule for recurring synthesis.\n\nWhen you are ready to charge for publications, the `lore-enable-payments`\n\nskill\nwalks you through setting a payout address, deploying a node, and testing a\npayment. You can stop before enabling payments.\n\nThe blueprint controls the shape of your library. The profile controls what the synthesis task looks for.\n\nPlanned and in-flight work on Lore itself is tracked as a git-versioned backlog under\n`docs/backlog/`\n\n, organized by component with per-item metadata (priority, effort, status,\nblockers). See `docs/backlog/README.md`\n\nfor the schema and how to manage it.\n\n`lore sync`\n\nimports supported agent memories into a local SQLite database.- A scheduled agent turns useful imports into topic-based memory files.\n- You review memories and decide what stays private or is discarded.\n- An agent may draft a publication, but only you can approve it.\n- A deployed node lists approved publications and accepts payment for them.\n\nLore remains useful as a private memory library even if you never publish or charge for anything.\n\n```\nbuyer task\n    ↓\nmarketplace search\n    ↓\ndiscover() ───────→ full catalog of approved teasers\n    ↓\nchoose zero, one, multiple, or all ids\n    ↓\nget(id) ──────────→ price quote for one publication\n    ↓                       ↓\nlocal retrieval ←── verified payment\n    ↓\nowner-approved publication\n```\n\nThe public surface has two tools:\n\n`discover()`\n\n— free; returns the full catalog of owner-approved teasers.`get(id)`\n\n— paid when policy requires it; returns exactly one publication.\n\nA buyer may choose zero, one, multiple, or every advertised id, calling `get`\n\nonce per selection. Publication ids contain a checksum: a damaged copy is\nrejected before payment. Use ids from a current catalog; a publication revoked\nbetween `discover`\n\nand `get`\n\ncan still be billed because settlement precedes lookup.\n\nThe implemented server exposes those two tools using MCP protocol version\n`2025-11-25`\n\n:\n\n```\n# Local agent configuration (newline-delimited stdio)\nlore serve\n\n# Stateless Streamable HTTP for local agents that prefer it\nlore serve --transport http --host 127.0.0.1 --port 8765\n```\n\nRegister the local server with either supported agent:\n\n```\ncodex mcp add lore -- lore serve\nclaude mcp add --scope user lore -- lore serve\n```\n\n`discover`\n\nreturns only owner-approved advertisement fields. `get`\n\nreads only\nactive publications the owner explicitly approved; no memory is reachable over MCP,\nwhatever its status. HTTP binds to loopback by default. Binding another interface requires\n`--token`\n\nor `LORE_MCP_TOKEN`\n\n.\n\nThe paid deployment boundary is a Cloudflare Worker in the owner's own\naccount, deployed with `lore node deploy`\n\n:\n\n```\nbuyer agent → owner's Worker (x402 payment gate) → owner-approved content\n```\n\nThe Worker source ships inside this package (`lore/node/`\n\n), so deploying never\nneeds this repository. Lore owns local retrieval and disclosure policy; the\nWorker owns the payment exchange, verification, and settlement, and the\nowner's machine only ever pushes approved publications outward — no tunnel, no\ninbound path to the private library. The deployed node serves only the\nowner-approved publications `lore push`\n\nmaintains in its edge database.\n\nBuying needs no Lore install and no Coinbase/CDP account — CDP is the\nseller's settlement facilitator, not the buyer's. A buyer runs\n[ bridge/](/dipakkrishnan/lore-mcp/blob/main/bridge/README.md), a local MCP server that fronts the seller's\nnode and holds the paying key; the agent sees\n\n`discover`\n\nand `get`\n\nas\nordinary tools and payment happens between them. Clone this repository, then:\n\n```\nnpm --prefix bridge install\n\n# Claude Code\nclaude mcp add lore-buyer -- npm --prefix /path/to/lore-mcp/bridge run start -- --node https://<host>/mcp --network eip155:8453 --max-usd 0.05\n\n# Codex CLI\ncodex mcp add lore-buyer -- npm --prefix /path/to/lore-mcp/bridge run start -- --node https://<host>/mcp --network eip155:8453 --max-usd 0.05\n```\n\nMatch `--network`\n\nto the node (`discover`\n\nreports it; `eip155:84532`\n\nis Base\nSepolia for test nodes). On first run the bridge self-provisions a throwaway\nsigning key at `~/.x402-bridge/key.env`\n\nand logs its address — fund that\naddress with USDC on the node's network, only ever with what you are willing\nto spend. The bridge refuses any charge off its configured network or beyond\n`--max-usd`\n\n.\n\nEnforced in code today:\n\n- only owner-approved, active publications ever reach the edge —\n`lore push`\n\nexports`publications WHERE active=1`\n\nand nothing else, so private memory cannot be served by construction; - approval requires an attended interactive session (a TTY gate agents cannot drive), and every publication must cite the real private memories it derives from — provenance buyers never see;\n- revocation takes effect locally at once and is pushed to the edge, with a\npersistent\n`lore status`\n\nreminder if the push fails; - the free surface advertises only owner-approved teasers, topics, and day-truncated freshness.\n\nDrafting skills ask agents to handle third-party and confidential information, but this is guidance rather than a code-level validator.\n\nNot yet implemented: per-buyer and per-topic limits, protection against repeated queries that reconstruct private material, pre-retrieval and post-generation policy checks, and an owner-visible audit log.\n\n```\n~/.lore/\n├── lore.db                 # SQLite records and FTS5 index\n├── automation/\n│   ├── profile.json        # owner-provided synthesis guidance\n│   └── synthesis-prompt.md # shared prompt run by the selected executor\n├── memories/\n│   ├── INDEX.md            # semantic index\n│   └── <topic>.md          # synthesized topic memory\n├── node/                   # deployable Worker source staged by `lore node deploy`\n│   └── .buyer.env          # test-buyer key, self-provisioned by `npm run pay`, never overwritten\n└── blueprint/\n    ├── blueprint.json      # captured shape of your lore (persona, axis, topics)\n    └── lore-map.md         # human-readable rendering of the blueprint\n```\n\nSource memory remains in the agent's directory. Lore stores its imported copy, review state, and source path locally. Updating a source file refreshes the indexed text without resetting the owner's disclosure decision.\n\n```\nuv sync --extra dev\nuv run --extra dev ruff check lore tests\nuv run --extra dev ruff format --check lore tests\nuv run --extra dev mypy lore\nuv run pytest                     # the Python suite\nuv run pytest tests/test_cli.py   # one module's tests, in isolation\nuv run python tests/gate.py       # every check, with the coverage floor enforced\nuv run lore --help\n```\n\n`uv.lock`\n\nis committed, so contributors and CI resolve the same project setup.\nThe curl installer remains independent of `uv`\n\nfor end users.\n\nThe Worker in `lore/node/`\n\nhas its own checks, run from that directory:\n\n```\ncp .dev.vars.example .dev.vars   # set LORE_WALLET to any valid address\nnpm ci\nnpm run lint\nnpm run types && npm run check\nnpm test                         # Workerd component tests with a mocked facilitator\nnpm run dev                      # MCP at http://localhost:8787/mcp\nnpm run smoke                    # free discover + unpaid x402 challenge\n```\n\nCI runs Python and Node lint, tests, compiler checks, and the Worker smoke test.\nIt does not currently run the local coverage floor or `tests/node/`\n\n.\n\nEvaluate the configured proxy against approved local publications without a payment or deployment:\n\n```\n./lore-test.sh \"What would you advise here?\"   # uses ANTHROPIC_API_KEY from your environment\n```\n\nThe evaluator uses the production Pi agent inside workerd and a temporary D1 database, prints its answer, citations, token cost, and duration, then deletes the temporary state. The model call is real and incurs provider charges.\n\n`tests/gate.py`\n\nruns the Python suite with a 90% per-file statement and branch\ncoverage floor. It also type-checks, bundles, and tests the Worker.\n\nThe Worker checks need dependencies installed:\n\n```\nnpm --prefix lore/node install && npm --prefix tests/node install\n```\n\nWithout the Node dependencies, the Worker part is skipped. Pass\n`--require-node`\n\nto make missing dependencies a failure.\n\nThe local CLI, memory import, search, review, synthesis, MCP server, publication flow, and x402 payments are implemented. Test deployments use Base Sepolia; Base mainnet requires an explicit opt-in. Repeated-query protection, remote identity, and marketplace discovery are not yet implemented.", "url": "https://wpnews.pro/news/show-hn-lore-build-and-monetize-personal-context", "canonical_source": "https://github.com/dipakkrishnan/lore-mcp", "published_at": "2026-08-21 18:25:23+00:00", "updated_at": "2026-08-21 18:44:38.926941+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "ai-infrastructure"], "entities": ["Lore", "Dipak Krishnan", "Claude", "Codex", "SQLite", "uv"], "alternates": {"html": "https://wpnews.pro/news/show-hn-lore-build-and-monetize-personal-context", "markdown": "https://wpnews.pro/news/show-hn-lore-build-and-monetize-personal-context.md", "text": "https://wpnews.pro/news/show-hn-lore-build-and-monetize-personal-context.txt", "jsonld": "https://wpnews.pro/news/show-hn-lore-build-and-monetize-personal-context.jsonld"}}