Knowledge

The agent has a unified knowledge base for everything it has learned: a persistent, searchable, structured store about itself, the user, and the world.

Knowledge is built on Firm, an open-source tool for structured knowledge graphs. Each entry is a .firm source file: a small, self-contained text document in Firm's DSL, so knowledge is both human- and machine-readable.

Entity types

Five types form the schema:

TypeWhat it is
ActorA person, AI, or organisation. Something that acts.
ThingA physical object, tool, place, service, or concept.
FactA structured truth or claim with provenance.
OutputAn artefact produced by actors: documents, reports, code, designs.
NoteA small highlight worth remembering.

All types share relationship fields (relates_to, belongs_to, uses, describes) and can use tags for searchability.

Tools

ToolWhat it does
SearchResults ranked by semantic similarity and keyword match; an empty query returns an overview.
GetFull detail for one entry, optionally with expanded relations and chat context.
AddCreate an entry; schema errors return the expected field structure.
UpdateMerge-update fields on an entry.
DeleteRemove an entry (requires consent).

Hydration

The agent doesn't always need to search. Each turn, the gatekeeper checks whether the user's message relates to something already in the base, by name mention or semantic similarity, and surfaces a compact summary in per-turn context.

If the user mentions "Bob" and actor.bob exists, the agent sees it without a tool call. Matches are retained for a few turns, so "tell me more about him" still resolves without repeating the name.

This covers gives the agent a baseline of available knowledge on-demand, and it can always use its tools to search for more.

Chat context

Every entry links to the chat it was created in. get_knowledge can optionally return that surrounding chat context, letting the agent recover the conversation behind a piece of knowledge.

Bundled knowledge

The app ships with read-only knowledge about itself: what Eigin is, how it works, what it can do. This helps the agent correctly answer questions about itself instead of making stuff up.

Scoping

Entries can be scoped to spaces:

  • Global (no space): visible everywhere.
  • Space-scoped: visible within that space.

When an entity exists in multiple scopes, the most specific wins: a space-scoped entry shadows its global counterpart, and deleting the override reveals the global version again. Entries in a private space are never visible from outside it.

Permissions

  • Read (search_knowledge, get_knowledge): default always.
  • Write (add_knowledge, update_knowledge): default always.
  • delete_knowledge: default ask. Removing knowledge requires consent.