Skip to main content
Ela is notes that remember. Search returns handles + provenance + coverage, never full bodies. Every write is idempotent. Every error carries a plain-English hint.

Agents

Connect over MCP, the HTTP API, or notes --remote (CLI). This host serves /llms.txt, /llms-full.txt, and /skill.md. The machine-readable contract is OpenAPI 3.1:
  • Served spec: GET https://api.elanotes.com/openapi.json (unauthenticated)
  • Docs copy: this site’s API reference, production origin first
The stable HTTP path is /v1. Production: https://api.elanotes.com. Local clone: http://127.0.0.1:4000. GET /openapi.json and GET /healthz are unauthenticated. /v1 and /mcp need a bearer in production. Create a personal access token in web Settings → Access tokens. Read is included; select Write notes for authenticated note mutations. Keep review under human control. Use the copied token through ELA_API_TOKEN for HTTP, CLI, or SDK examples, or Copy config for Cloud MCP.

People

  1. Open the web app.
  2. Create a note — Notes.
  3. Find it with ⌘K — Search.
Notes in Private sync as ciphertext. The cloud does not search them. Privacy.Local clone: pnpm dev serves the web app on :3000. Details: Web and Desktop.

Production

/healthz returns {"status":"ok"}. /openapi.json returns 200. /v1/vault and POST /mcp with no token return 401 and reason: AUTH_MISSING. A 503 means storage did not come up. Do not add a trailing slash. The served spec is https://api.elanotes.com/openapi.json. This site’s API reference uses that origin first, then http://127.0.0.1:4000.

Local API in five commands

Point VAULT_PATH at a markdown folder (the in-repo fixture is packages/evals/fixtures/vault-small). Leave auth unset for an open local path. Details: engineering day-to-day setup. On vault-small, q=Paddle returns slug payments-provider-decision plus a coverage block. private/ is excluded from cloud-shaped results.

First write

Applied receipts embed note (GET shape without lines). Queued receipts are followable at GET /v1/writes/{id} with notes.review in authenticated mode. With a write-only token, report pending_id and hand it to a reviewer. The example above uses open local mode. A 409 VERSION_MOVED means re-read, then retry with the current version_id and a fresh Idempotency-Key. Follow hint.

Surfaces

Notes

Create, edit, delete. The folder is the note.

Agents

MCP, HTTP, CLI. Coverage on every response.

Web

Next.js three-pane notes app on :3000.

Desktop

Unsigned Electron. Local vault first.

CLI

notes --remote through @elanotes/sdk.

MCP

Local stdio or cloud POST /mcp.

API overview

Host, auth, errors, filters, masks, limits.

Typed SDKs

TypeScript @elanotes/sdk and Python elanotes.