Yesterday the first long-lived session, the steward, appeared in unblocked. Today the question was what to call such a thing, and the answer was a role.
cattle and hires
A conversation in Cowork put it plainly: agents are cattle, roles are what we hire. A session starts, works and ends; nobody should get attached to it. What lasts is the job: a database expert, a steward for Cubes, an assistant between Selim and his to-dos, someone who looks after the library.
Described in cube terms, a role has six parts: a charter (what it is for), its knowledge (the skills it reads), its doors (the tools it may use), an inbox where work reaches it, a heartbeat (when it wakes), and a notebook (what it remembers). Selim added it to Cubes at once. The decision was not to build a roles app yet: first let things settle, and start with one role.
A role in six parts. A session comes and goes; the role stays.
For now the roles live in a git repository, and later they will be served to sessions through Mosaic.
one door
The first role is the assistant, and it got a door. Mosaic now has its own connector: a Claude session registers itself, Selim approves it with his personal Mosaic link, and from then on it can add a to-do straight into his own list. That replaced a skill and a table that every session had to write into.
With the door came a habit. When a session needs Selim (an answer, an approval, a decision, a review, a look at something), it doesn’t wait in its own thread. It leaves a to-do that says what it needs and from whom. Twice a day the assistant goes through the new ones, works out whose hands each one is in, and offers what it could take on. It only offers; it never decides for him.
the invisible assistant
Then a small surprise. The assistant had been working all along: it had offered whose hands for 46 to-dos. But the screen only showed what had been kept, not what had been offered, so its work was invisible. An assistant that only suggests needs a screen that can show a suggestion. Now offers show, and a tap keeps one.