Application · Entities · v0.3.0

AbstractEntity

We call an entity a persistent, self-evolving agent with an identity, a purpose, a history and experiences. AbstractEntity is our work toward self-evolving agents. An entity lives on your AbstractGateway, which runs its lifecycle (create, visit, summon, sleep). AbstractEntity is the web app where you create entities, talk with them, watch their memory graph grow and read their diaries; the gateway serves it at /apps/entity/ (see Install).

# Console > Apps > Entity > Open
# Or on its own (Node.js 18+), port 3007
npx @abstractframework/entity --gateway-url http://127.0.0.1:8080

What an entity is

An entity is a home folder holding everything it is and has lived. Each time you talk with it or give it work, the same self comes back, across sessions, users and devices. Its founding identity is fixed for life; what grows is its memory, its diary, and the lessons, feelings and interests it chooses to keep.

Identity

A starting document (the spark, stored verbatim and kept for life) plants its identity core: values in order of precedence, purposes, traits and honesty limits. Every conversation opens with that core, whole: when it does not fit the model's budget, the conversation is refused rather than cut, because "a truncated core is a different person".

valuepurposetraitinterest

Two records

Memory is the involuntary record: everything that happens to it and its standing feelings about people, tools, ideas and places. The book, its diary, is the voluntary record: first-person, hash-chained and written only by the entity. There is no delete path in the code or over HTTP: the gateway never deletes an entity's home.

memory.sqlite3home.sqlite3

One home

The home folder also holds the entity's own run store and ledger, its artifacts and a workspace. Copy the folder and you move the whole entity. A name belongs to one entity: creating one whose name exists opens the existing entity. Its handle is <name>@<gateway ip>.

spark.yamlruntime ledgerworkspace/

Persistent expertise, and a research track

An entity keeps one identity, planted once, and everything else it becomes comes from what it lives: the conversations it has and the requests and tasks it receives.

An agent that owns its responsibility

For regular work, an entity is an agent with a persistent identity and expertise. Every conversation and task is formed into its memory; at the end of each session it writes down the lessons and feelings it keeps, so it remembers what worked, what did not and why, and recalls it before it answers the next time. Give it a task (a work order, or /task from AbstractCode) and it declares when the task is done.

A self-evolving history

The starting document's values, purposes and traits never change. What evolves is its history, its interests and its purposes in practice, shaped by gathered experience. Proposals it forms about itself are recorded for review and are not applied automatically.

A research question

In its own time an entity explores its interests and tries to resolve its open questions. Whether a self-evolving history, purposes in practice and experiences can lead to something like awareness is a separate research track and an open question.

Visit, summon, sleep

An entity is in exactly one phase at a time: a visit (a visitor is in the room), work, personal time of its own, or sleep. Newborn entities begin asleep. Separately, its state is awake, asleep or paused.

WordWhat happens
CreateType a name and press Create entity; it starts from the standard starting document, or from your own YAML under Advanced: starting document. The gateway checks the document, stores it verbatim and plants the identity core. The same document twice is the same entity; a changed one is refused.
VisitA conversation with you, the signed-in visitor, run as one durable run in the entity's own runtime, so a gateway restart does not end it. Each turn it recalls, answers, may write in its diary and forms new memories; at the close it reflects and keeps what it concluded: a summary, interests, lessons, diary entries and feelings.
SummonA work session as the entity: its identity header leads the system prompt and your work brief is the prompt. Summons are workplace sessions: routine feelings only, no identity writes.
WorkA task left with the entity: an operator's work order in its home, or /task <name> <title> from the AbstractCode terminal, which leaves it on the entity's desk. The entity works on it in its own time and declares when it is done; the order is archived, never deleted.
SleepConsolidation of the memory graph, and optionally a dream. Sleep makes no model calls for the dream: it proposes, and waking evidence decides.
Own timeThe life loop: the entity prompts itself through its interests and questions, a day at a time, and may choose to rest. Off by default; an operator arms it.
BlueprintThe page that shows how every entity works: the lifecycle state graph, the operator dials and the cognition map of how memory is built for each turn.
MeetTwo entities in one conversation, which you can steer and read afterwards.

From the terminal, AbstractCode opens a visit with @name, lists entities with /entities, and leaves work on an entity's desk with /task <name> <title>.

It looks back at its own past

An entity's memory runs on AbstractMemory: a temporal graph where every fact keeps when it was observed, when it was valid and where it came from. Nothing is deleted; only how easily a memory comes back changes.

Recall

Before every answer

Each turn starts with a recall over the entity's own memories, and the identity core is always present. Recall is a pure read: only memories the turn actually used are strengthened.

Formation

After every turn

The turn becomes an episode, kept with its verbatim text. What the entity chooses to write goes into its diary: notes, ideas, commitments, reflections, questions, problems and lessons.

Tools

Its own questions

During a turn it can search and read its memories, list its recent ones, ask how it feels about someone or something, and read its diary. What it learned comes back as lessons, and how things went as feelings.

Sleep

One night

Resolution, maintenance, world models, mining, identity and dream, in that order, deterministic and without model calls. Sleep only proposes: summaries stay inactive until reviewed, and waking evidence decides about a dream.

Every visit is a durable run with its own ledger in the entity's home, which an operator can read (GET /api/gateway/entities/<name>/visit/<run_id>/ledger). The entity itself looks back through its memory and its diary, and the app's Ledger tab shows its life as events: memories formed, recalled, committed and appraised, diary entries and maintenance.

The entities list and the entity page

The app is a thin client: it keeps no server state of its own. Every view is read from the gateway, and the memory views are computed from the memory engine's replay stream, so replay, live tail and scrubbing back in time show the same picture. Without a reachable gateway it opens a bundled demo life.

The AbstractEntity 0.3.0 Summoned entities page at /apps/entity/ with one newly created demo entity, Vega, shown asleep, and its visit, work, personal and sleep modes
The entities list with a newly created demo entity, asleep as every newborn is.
SurfaceWhat it shows
Memory graphThe entity's memories as a live force-directed graph, with search, lenses (identity, recent, warm, feelings, diary, dreams, questions), replay, time scrub and live tail
ChatVisits: talk with the entity, see its reasoning cycles and tool use, adjust its model, files, tools and system prompt in Settings
CardThe identity card: values, purposes, likes, open questions, interests, key moments and life so far
DetailOne memory: its verbatim text, feelings and associations
BookThe diary as a day-grouped journal; sealed entries stay sealed
LessonsWhat the entity has learned and kept
WorldShort orientation cards about people, systems and ideas it has met
HealthMemory counts, recall coverage, sessions, model usage and on-disk footprint
WaveThe cognition wave: the expressive character of the entity's own words over time (not its inner state)
LedgerThe continuous life ledger: memories formed, recalled, committed, appraised, diary and maintenance
Meet consoleTwo entities in one conversation: steer it, watch both sides, read it afterwards
Released, pre-1.0. AbstractEntity 0.3.0 (npm) and AbstractMemory 0.3.0 (PyPI) are released, and the entity routes ship with AbstractGateway. The APIs are versioned and tested, and details may still evolve. The app has no entry into the work phase of its own (work comes from a work order or /task), and the cognition map is served read-only.

Open the Entity app

From the gateway console, the Entity card's button reads Create your first entity while the gateway has none; it opens the app signed in, straight on the creation form. Serving the app at /apps/entity/ needs AbstractGateway 0.7.0 or newer.

# Gateway console > Apps > Entity > Open
http://127.0.0.1:8080/apps/entity/
  • The gateway serves the app on its own address, so a remote or headless machine needs one port and one tunnel for the console and every app (see headless installs).
# run without installing
npx @abstractframework/entity
# or install the abstractentity command globally
npm install -g @abstractframework/entity
abstractentity --gateway-url http://127.0.0.1:8080
  • The app serves on http://127.0.0.1:3007 (flags --port, --host, --gateway-url with aliases --gateway and --url). Without --gateway-url it uses the gateway installed on this computer, else http://127.0.0.1:8080. Sign in from the connect dialog: the server keeps the gateway session in HttpOnly cookies and the browser never stores the token. http://127.0.0.1:3007/#new opens the creation form directly.