Tana Personal knowledge workspace โ€” narrative notes, contacts, interaction log

Tana is Ed’s primary PKM โ€” narrative notes, research, planning, contacts, and the passive interaction log. Structured data (plant species, plantings, observations) lives in farmdb (PostGIS); Tana stays for the unstructured/narrative side.

Workspace structure
  • Workspace name: ๐Ÿ Main
  • Workspace ID: rav2D0ijeq
  • Home node ID: daTRRXldca
  • Inbox node ID: rav2D0ijeq_CAPTURE_INBOX
  • Library node ID: rav2D0ijeq_STASH

The workspace anchors several recurring areas:

Area What’s in it
Calendar nodes Daily journal anchored to date nodes; mcp__tana-local__get_or_create_calendar_node for programmatic access
Contacts Tagged #person nodes; bidirectionally synced with Mac Contacts (see Contacts sync)
Interactions #interaction nodes auto-created from dictation when Ed mentions someone by name (see Interaction tracking)
Research / planning Project notes, ecological ontology, design docs, draft writing

Detailed Tana reference (tag IDs, field IDs, curl templates, full workflow): ~/Sync/ED/memory/tana-interactions.md.

tana-local MCP

Tana exposes its own MCP server at http://127.0.0.1:8262/mcp โ€” the desktop app listens; no separate process. Auth = Authorization: Bearer <PAT> where the PAT is a Tana Personal Access Token generated in Account & Settings โ†’ Personal Access Tokens (MCP/AI), type: "personal". Older workspace / Input-API tokens return 401 against /mcp.

Wiring in claude_desktop_config.json:

npx -y mcp-remote http://127.0.0.1:8262/mcp \
    --header "Authorization: Bearer $TANA_PAT" \
    --transport http-only --allow-http

--allow-http is required because mcp-remote refuses non-HTTPS URLs without it. Token lives in ~/Sync/ED/SECRETS.md row 22.

20 tools available (verified May 24 2026):

Category Tools
Discover list_workspaces, list_tags, get_tag_schema, search_nodes
Read read_node, get_children, open_node, check_node
Calendar get_or_create_calendar_node
Write (structured) import_tana_paste, tag, create_tag, add_field_to_tag, set_field_content, set_field_option, set_tag_checkbox
Move / modify edit_node, move_node, trash_node, uncheck_node

A short-lived race condition was observed at Claude Desktop startup (May 25 2026): Tana’s MCP port hadn’t opened yet when mcp-remote tried to connect, leading to ECONNREFUSED and a fatal exit. After Tana finishes launching the endpoint responds (curl returns 401 to unauthed requests, which is the right shape), and reconnects work on next restart.

Interaction tracking

Dictation processing extracts person mentions from each recording and creates #interaction nodes in Tana so a passive “who I talked to / about” log builds up automatically. Inspired by Roosevelt’s index-card system โ€” no daily journaling discipline required; if Ed says “I talked to Hugo about the willows” in a Just Press Record session, the parser turns that into an interaction node linked to Hugo and to the source recording.

  • Trigger: the parse-dictation.py pipeline matches person names against existing #person nodes in Tana (via search_nodes) and against Mac Contacts.
  • Unknown people are flagged in the processed report so Ed can decide whether to create a new contact.
  • Structured fields on #interaction: date (from the recording’s start timestamp, never script-run time โ€” see process-dictation SKILL Date Rule), context, source recording, related person, related project / topic if surfaced.

Reference for tag IDs, field IDs, and the exact workflow: ~/Sync/ED/memory/tana-interactions.md.

Contacts sync (Tana โ†” Mac Contacts)

Weekly Cowork scheduled task tana-mac-contacts-sync runs Sundays at 08:05. Direction: Tana wins conflicts โ€” Mac Contacts is treated as a downstream mirror. New #person nodes in Tana flow into Mac Contacts; field updates on existing #person nodes overwrite the Mac Contacts entry.

The scheduled task uses Gmail OAuth for some lookup steps; on token expiry the task will fail loudly and Gotify-alert.

SKILL: ~/Sync/ED/skills/tana-mac-contacts-sync/SKILL.md (or whichever copy is current in ~/Documents/Claude/Scheduled/).

Keyboard shortcuts
Shortcut Action
โŒ˜ K Command palette โ€” do anything
โŒ˜ E Toggle between editing and viewing
# or โŒ˜ T Add a supertag to a node
@ Reference another node by name
Tab / Shift+Tab Indent / outdent (child / parent)
โŒ˜ Enter Open node in full view
โŒ˜ J Open AI panel
โŒ˜ Shift K Quick-add to Inbox from anywhere
AI features
  • โŒ˜ J opens the AI panel โ€” summarize, generate, transform, query against the workspace.
  • AI commands work on any node or any search result.
  • For programmatic AI access from outside Tana (Claude Desktop, scripts), prefer the tana-local MCP โ€” same access, scriptable.
Resources
Link What
tana.inc/docs Official documentation
tana.inc/community Slack community + shared templates
~/Sync/ED/memory/tana-interactions.md Tag IDs, field IDs, workflow notes, curl templates
~/Sync/ED/SECRETS.md row 22 Tana Personal Access Token