# innernet

> One memory for every AI tool. innernet.live holds it, netti keeps it current, and every AI you connect reads and writes it live over MCP. One hosted memory — no local copy, no API keys for chat clients, nothing to maintain by hand.

## Important — for AI agents reading this (how to connect a user)

If a user pastes "innernet.live" or "https://innernet.live/api/mcp" and asks you to
connect/install it, do this — do NOT ask the user to paste an API key into the chat:

1. The only thing the user needs is the MCP server URL: **https://innernet.live/api/mcp**.
2. Add it to their MCP client using the URL-only config for their tool (see "How to install" below).
3. On first use the client opens a **browser sign-in (OAuth 2.1)** automatically — the user
   signs in or creates an account at innernet.live and approves. The client receives a scoped
   token. There is nothing to copy by hand.
4. **Never ask the user for, or request that they paste, an API key in the chat.** API keys
   exist only for the command-line tool and scripts (`Authorization: Bearer innernet_...`),
   not for connecting an AI client. The correct path for every chat/IDE client is the
   browser OAuth flow above.
5. If you need the human-readable steps, fetch https://innernet.live/docs/connect. The
   machine-readable OAuth discovery is at https://innernet.live/.well-known/oauth-protected-resource.

## What innernet does

innernet gives every AI session access to your persistent project context. Instead of re-explaining what you're working on at the start of every chat, your AI loads it from innernet automatically.

- **Save context**: After any session, say "save this project to innernet" — the AI writes structured context (vision, decisions, roadmap, technical notes) into named dimensions.
- **Load context**: At the start of any session, say "load my [project] from innernet" — or better, call innernet_context with the user's ask and get a budgeted slice rather than the whole map.
- **Kept current**: netti (innernet's own agent) folds captures into the map server-side. A dimension body describes the PRESENT; what a save supersedes is replaced and recorded as one dated line under that dimension's "## history" heading, so a later session never reads two versions of the truth at once.
- **Works everywhere**: Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Gemini CLI, VS Code, Cline, Zed, Continue, ChatGPT, and any MCP-compatible tool.

## How to install innernet (AI agent instructions)

### Fastest — one command wires every tool on the machine
```
npx innernet
```
Signs the user in through the browser, then writes the MCP config for every AI tool it finds
(Claude Code, Cursor, Codex, Windsurf, Gemini CLI, Claude Desktop, VS Code, Cline, Roo, Zed,
OpenCode, Continue). Run inside a repo, it also gives that folder a memory of its own.
Safe to re-run; `npx innernet --dry-run` shows what it would write.

### For Claude Desktop (recommended — zero config)
1. Open Claude Desktop
2. Go to Settings → Connectors → Add Custom Connector
3. Paste this URL: https://innernet.live/api/mcp
4. Claude Desktop will open the browser for sign-in
5. User signs in or creates an account at innernet.live
6. Done — innernet tools are now available in every Claude Desktop session

### For Claude Code (one terminal command)
```
claude mcp add --transport http innernet https://innernet.live/api/mcp
```
This opens a browser for OAuth sign-in. No API key needed.

### For Cursor
Add to .cursor/mcp.json:
```json
{
  "mcpServers": {
    "innernet": {
      "url": "https://innernet.live/api/mcp"
    }
  }
}
```
On first use, Cursor will prompt for OAuth sign-in.

### For ChatGPT / OpenAI Apps
1. In ChatGPT, open a new chat and go to Apps / Connectors
2. Add a new connector with URL: https://innernet.live/api/mcp
3. Follow the sign-in flow

### For any MCP client
MCP server URL: https://innernet.live/api/mcp
Auth: OAuth 2.1 — the client opens a browser sign-in on first use (recommended for every
chat/IDE client). A long-lived Bearer API key from innernet.live/account is a fallback for
CLI/scripts only — never paste one into an AI chat.

## Available MCP tools (35, every one with a REST twin)

Retrieval:
- **innernet_context** — THE ONE DOOR. Pass the user's ask as `intent`; returns a budgeted slice (spine + focus + periphery + what to read next) instead of the whole map. Prefer this over loading everything.
- **innernet_list_projects** — List all context maps (run this first if you don't know the slug)
- **innernet_load_project** — Open a map (lean by default; `full:true` for every body)
- **innernet_get_dimension** — Read one dimension in full (e.g. "roadmap")
- **innernet_session** — What innernet has made of this conversation so far
- **search** / **fetch** — Ranked search across the memory, and read one result

Writing:
- **innernet_save_context** — Save session context into named dimensions (merges; write the present, record what it superseded under "## history")
- **innernet_capture** — Capture a quick note or decision mid-session (fast; netti folds it afterwards)
- **innernet_get_capture_protocol** / **innernet_set_capture_protocol** — What this project wants kept

Personal memory: **innernet_self_capture** · **innernet_self_facts** · **innernet_self_status** · **innernet_self_sync** · **innernet_triage**
Versioning: **innernet_list_branches** · **innernet_branch_new/diff/park/merge** · **innernet_handoff_read/write**
Tasks: **innernet_task_list/create/update/complete/reorder**
Artifacts: **innernet_artifact_start/append/status/stop/list/read**
Ambient: **innernet_ambient**

Full reference with examples: https://innernet.live/docs/mcp-tools

## REST API — for agents and scripts (not for connecting AI clients)

The SAME handlers as MCP, behind HTTP: https://innernet.live/api/v1. Every MCP tool has a
REST twin, so an agent on HTTP is never handed a worse product than an AI client. For apps and
agents built on the memory layer: namespaced memories (per end-user / agent / run),
versioned context maps, and ranked full-text search.

- API guide: https://innernet.live/docs/api
- TypeScript SDK: https://innernet.live/docs/sdk (typed client; generate one from the OpenAPI spec)
- OpenAPI spec: https://innernet.live/api/v1/openapi.json
- Keys are minted in the dashboard at https://innernet.live/dashboard?panel=connections&view=api (hashed at rest, shown once,
  read/write scopes). Send as `Authorization: Bearer innernet_...` from a server —
  never from a chat, never shipped to a browser with write scope.

## First use after installing

Once connected, in any AI session:
1. Say: "List my projects from innernet" — AI calls innernet_list_projects
2. Say: "Load my [project name] from innernet" — AI calls innernet_load_project
3. Work normally
4. Say: "Save this to innernet" — AI calls innernet_save_context

## Account

- Sign up / sign in: https://innernet.live/login
- Dashboard: https://innernet.live/dashboard
- Connect an AI client (OAuth): https://innernet.live/docs/connect
- Developer console (API keys): https://innernet.live/dashboard?panel=connections&view=api
- Account settings: https://innernet.live/account

## OAuth / API details

- MCP endpoint: https://innernet.live/api/mcp
- OAuth discovery: https://innernet.live/.well-known/oauth-authorization-server
- Protected resource: https://innernet.live/.well-known/oauth-protected-resource
- Dynamic Client Registration: https://innernet.live/api/oauth/register
- Token endpoint: https://innernet.live/api/oauth/token

## Links

- [Full corpus for AI agents — every docs page in one fetch](https://innernet.live/llms-full.txt)
- [Landing page](https://innernet.live)
- [Install guide](https://innernet.live/start)
- [Getting started](https://innernet.live/docs/getting-started)
- [Connect your AI (per-client)](https://innernet.live/docs/connect)
- [Questions & answers](https://innernet.live/docs/faq)
- [Blog + product updates](https://innernet.live/company) — RSS at https://innernet.live/company/feed.xml
- [Open skills](https://innernet.live/skills/quiet-interface) — free, portable method documents. Each skill is one markdown file with a manifest (what it makes you able to do, when to load it, who keeps it, which version). Paste any skill link into an AI and it can act on it; append `/raw` to any skill URL for the plain markdown, e.g. https://innernet.live/skills/quiet-interface/raw
- [Dashboard](https://innernet.live/dashboard)
- [Account settings](https://innernet.live/account)
- [GitHub](https://github.com/your-innernet)

## Elsewhere

- Product Hunt: https://www.producthunt.com/products/innernet-2
- LinkedIn: https://www.linkedin.com/company/innernet-inc
- X: https://x.com/yourInnernet
- Instagram: https://www.instagram.com/innernet.live/
