Local Agent Capture¶
Turn a sentence into a stored fact. This skill maps everyday phrasing to the
la CLI so the user can capture relationships and commitments without leaving
the chat — and without anything leaving the machine.
When to use¶
- "Capture / log / note that ..." about a colleague, team, or commitment.
- The user mentions meeting someone, who reports to whom, or who collaborates.
- The user says "I owe X ..." or "X owes me ..." or sets a follow-up/deadline.
- Mid-conversation asides worth keeping ("Bob raised flaky CI again").
Do not use this for general questions, web lookups, or anything that is not a person/relationship/note for the local org store.
What this captures¶
- People — name, optional
team,role,org,alias,tag, and the--meanchor (yourself). - Relationships (links) —
reports_to,collaborates_with(default),knows. - Notes — free text about a person or team, typed as
requirement,followup, orobservation, optionally a commitment (--owe= I owe them,--owed= owed to me) with an optional--duedate.
The only tool you use¶
Run the la CLI via the shell. Never read or write the SQLite file directly,
never use network tools. Every fact goes in through la.
Command grammar¶
la person add "NAME" [--team T] [--role R] [--org O] [--alias A]... [--tag T]... [--me]
la link add A B [--kind reports_to|collaborates_with|knows]
la note add "TEXT" [--for PERSON] [--kind requirement|followup|observation] \
[--status open|done] [--due YYYY-MM-DD] [--owe|--owed]
la person list [--team T] # tabular, with ids
la note list # tabular, with ids
la link list # tabular, with ids
la who TEAM [--depth N] # who I know on a team (1st/2nd degree)
la intro PERSON # warm-intro route to someone
la brief PERSON # dossier: relationships, notes, reach
la owe # open commitments I owe
la owed # open commitments owed to me
la delete person ID | la delete note ID | la delete link ID
la reset --yes # wipe everything (DESTRUCTIVE)
PERSON/A/B accept a name (exact match, then case-insensitive
substring) or a numeric id.
Natural language to command (study these)¶
| User says | You run |
|---|---|
| "I'm Nathan, set me as me" | la person add "Nathan" --me |
| "Met Jane, she's a PM on SPEAR" | la person add "Jane" --team SPEAR --role PM |
| "Add Alice Chen, staff eng, team SPEAR, also goes by Al" | la person add "Alice Chen" --team SPEAR --role "Staff Eng" --alias Al |
| "Bob reports to Alice" | la link add Bob Alice --kind reports_to |
| "I work with Carol" | la link add Me Carol |
| "Note that Bob raised flaky CI in standup" | la note add "raised flaky CI in standup" --for Bob |
| "I owe Dana the threat model by Friday" | la note add "threat model" --for Dana --owe --kind requirement --due <Friday's date> |
| "Priya owes me the API doc" | la note add "API doc" --for Priya --owed --kind requirement |
| "What do I owe?" | la owe |
| "Who do I know on SPEAR?" | la who SPEAR |
| "Brief me on Bob" | la brief Bob |
Procedure¶
- Anchor first. If the user has not set themselves, the reach queries
(
who/intro) cannot work. Ifla person listshows nomerow and the user refers to "I"/"me", ask their name and runla person add "NAME" --me. - Parse the sentence into the smallest set of
lacommands. One fact per command. A sentence may yield several (add the person, then the link, then a note). - Resolve dates. Convert "Friday", "next week", "the 19th" to an absolute
YYYY-MM-DDfor--due. If the date is ambiguous, ask. - Run the command(s).
- Read back. After a write, run the matching list/brief to confirm and show the user what was stored:
- after
person add→la person list - after
note add→la note list(orla brief PERSON) - after
link add→la link list - Disambiguate, don't guess. If
lareports a name is ambiguous, runla person list, show the candidates, and ask which id. Never invent an id.
Rules and anti-patterns¶
- Never touch the database file, run migrations, or use
sqlite3directly — onlyla. - Never use web/network tools or echo captured content anywhere but
la. This system's whole value is that data stays local. - Confirmation gate:
la delete ...andla reset --yesare destructive. Only run them after the user explicitly confirms in this chat ("yes, delete"). - Don't capture vague chatter as notes — capture facts and commitments.
- Don't fabricate teams/roles the user didn't state; omit the flag instead.
- Don't re-add a person who already exists; check
la person listfirst when unsure, and add a note or link instead.
Compatibility¶
- Requires the
laCLI on PATH (this repo'slocal-agent/lawrapper oruv run local-agent). - Local-only: no network egress. The store is a single local SQLite file.
- Intended to run under a local model (see
local-agent/README.md→ "Chat capture"); the privacy guarantee is auditable vialocal-agent/scripts/audit_egress.sh.