ChloeGet Started

Docs

Features

The tools chloe brings to an agent: which feature adds each one, what it does, what is on by default, and the tools every agent has with no feature.


Features

A feature is a set of tools chloe has built in. You switch it on or off in features in the agent's agent.ts, with nothing to import: features: { memoryPerUser: true, runScripts: true }.

The tool names here are the ones the model sees. Your instructions and skills should say what to do ("note it in your memory"), not name these tools, so a rename breaks nothing (A prompt with tools).

The features

Feature Default Tools it adds
memory on memoryListFiles, memoryReadFile, memorySearchFiles, memoryWriteFile, memoryEditFile
selfImprovement on selfWriteFile
memoryPerUser off memoryWriteUserNotes
runScripts off scriptRun

memory

The agent's notes between runs, in its memory folder and nowhere else (An agent says where that is). false leaves them out.

Tool What it does
memoryListFiles Lists the files in its memory.
memoryReadFile Reads one.
memorySearchFiles Finds the files that contain some text. The search is plain text, not by meaning.
memoryWriteFile Writes a whole file.
memoryEditFile Changes part of a file.

Every run that changes the memory is one git commit under the agent's id.

selfImprovement

selfWriteFile changes files in the agent's own folder: its instructions, skills and jobs, and its code (agent.ts, tools, services, channels, scripts). It writes every file one change needs in one call, and that is one commit you can read and undo from the dashboard. With code among them, the agent is loaded with the new files first, and if it would not load, every file is put back and the agent is told why.

false turns it off, { code: false } keeps it to plain text, { files: ["md"] } narrows it to some file endings, and { except: ["PERMISSIONS.md"] } keeps a file read only and turns code off. It never writes its evals or its memory.

It is in a turn only when the agent's owner asked, and is refused once another tool in that conversation read from outside the agent. The whole rule is What an agent may change about itself.

memoryPerUser

memoryWriteUserNotes keeps one note on each person the agent talks to, on any channel, as users/<channel>-<id>.md in its memory. The note is shown at the top of each turn with that person, and the tool replaces it. Whose note it is comes from who sent the message, never from the model, so one person on two channels has two notes. A visitor on a web channel gets this tool even though the channel does not name it.

runScripts

scriptRun runs any file in the agent's scripts/ folder and returns what it printed, or lists them. Each script must be executable (chmod +x and a #! first line), runs inside scripts/, and gets the memory folder in MEMORY_FOLDER. With this on and scripts/ empty, the agent does not load. Give each script a skill that says when to run it.

With no feature

Tool Who gets it What it does
skillRead every turn Opens one of the agent's skills by name. The agent sees every skill's description and opens the one it needs.
selfListFiles turns its owner wrote Lists the files in its own folder, and which it may change. Never its memory.
selfReadFile turns its owner wrote Reads one of them.
selfListRuns turns its owner wrote Lists its own runs, newest first: the job or chat, where it came from, when, the cost, and whether it failed.
selfReadRun turns its owner wrote Reads one run: what started it, the answer or the error, and each step on the way.
selfReadGuide turns its owner wrote Reads these guides, for the version installed, so it can say what it could be given (Gmail, a channel, web pages) and how. An agent that may change itself is told to read them before saying something cannot be done, and never to ask for a secret in a chat.

The owner is owner in settings, the first entry in a channel's allowFrom, or the account on the dashboard. A job, a token and a visitor never get the four self tools, because a run holds what other people said. Reading a run counts as reading from outside, so a change after it in the same conversation is refused.

On a channel that names its tools

A channel's tools keeps a turn to the tools it names, plus the memory tools and skillRead. A visitor on a web channel is a stranger and gets only what the channel names, and memoryWriteUserNotes with memoryPerUser on. Naming a memory or self tool there stops the agent from loading. See Channels.