Kotoba

Where to start

What Kotoba isWho she is and where she runs, in one page
InstallingOne package, two commands
First runA key, a model, her first words
The approval gateHow she asks before she acts
The two voice modesLocal voice, or the agent tunnel
The soul fileChange who she is
RoadmapWhat grows next, and what was cut on purpose

Or a section

↑↓ move openesc close124 pages
All pages

Vision4 of 5

The three tools

About 4 minutes to read

On this page

Three tools carry vision. Two read, one writes. All three are offered in an ordinary conversation and in work mode.

ToolFamilyRiskTakesGives back
view_capturecorereadfileThe saved capture, as an image
remember_imagememorywritesource, about, note, kindA sentence saying what was kept, or was not
recall_imagememoryreadqueryUp to 3 keepsakes, as images, plus their notes

None of the three draws an approval card. They are bounded by jails instead: view_capture cannot read outside the Files library, and remember_image writes only into her own store.

view_capture(file)

Re-opens a screenshot from the Files library. Covered in full in Session captures.

  • Needs: a filename. The path relative to the library, or the bare basename; the resolver tries three passes and then gives up.
  • Refuses: anything that resolves outside the library, and anything that is not an image.
  • Refuses on Discord unless the person asking is the owner, in words and not only by being withheld from the schema list.
  • Fails quietly: an unresolvable name returns nothing, which becomes the spoken fail line rather than an error.

remember_image(source, about, note, kind)

Saves a picture into durable visual memory. Covered in full in Visual memory.

  • Needs: about, always. Without it nothing runs.
  • Needs: an image it can actually reach — the one you shared, a filename in Files, a data: URL, or (work mode only) an image URL.
  • Refuses: camera, which does not exist; a web fetch in the middle of a conversation; a data: URL over the size cap; a filename it cannot find, in which case it names the image you actually shared so the next call can succeed.
  • Reports a failure as a failure. A save that did not happen leaves a ran-and-failed record, not a refusal — the attempt may have written bytes, and that trace has to survive.

It is also the only tool that keeps a picture. memory_write stores words and no image, and the prompt says so in as many words, because "save this photo" answered with a text fact was a real failure: she described the image correctly, saved a sentence, and said the picture was kept.

recall_image(query)

Searches the keepsakes and re-opens the matches. Covered in full in Visual memory.

  • Needs: a query. An empty one runs nothing.
  • Gives back: at most 3 images, plus a line per hit. Hits it could not attach are listed separately as notes with no picture behind them.
  • No match returns nothing, and she says she has no image saved for that yet.

What you see and hear

Each tool declares a line for before the call, one for a successful ending, and one for a failure. They are spoken only in a voice register, and they are suppressed when the answering model is a reasoning model — a model that narrates before and after itself does not need canned English in front of an answer that was being given in another language.

ToolBeforeDoneFailed
view_capture"Let me look at that again...""Okay, I'm looking at it now~""I couldn't find that capture to look at again."
remember_image"Oh, I want to remember this — let me keep it.""Saved to my visual memory~""I couldn't keep that image just now."
recall_image"Let me picture that again...""Got it — I can see it again:""I don't have an image saved for that yet."

None of the three has a heartbeat line: they are fast enough that nothing needs to fill the silence. A SOUL.md may override any of these lines per tool.

Her face follows the same three tools:

ToolWhile it runsIf it fails
view_capturethinkingconfused
remember_imagedeterminedembarrassed
recall_imagethinkingconfused

There is deliberately no expression emitted on success. The face of a finished turn comes from the audio tag she speaks, so voice and face have one source instead of two that can disagree.

On screen, the two read tools emit a status frame rather than a step row — the terminal shows "looking at that screenshot again…" and "finding the picture she kept…" while they run. Because remember_image is a write, it draws a step row in the terminal panel and writes a row to the audit log: the tool name plus the first 180 characters of its arguments. The reads write no audit row.

Next: Privacy and deletion.