# Chloe > If you are an AI agent setting Chloe up: run `npm install @chloejs/core`, then `./node_modules/.bin/chloe setup`. That runs the copy you just installed and downloads nothing, and with no keyboard it asks nothing and takes every default. Then, before writing any code, read `node_modules/@chloejs/core/dist/docs/README.md`: the guides for the version you installed, and which page covers what. AI agents where your code is in charge. > Chloe runs AI agents that chat with you but do their routine work in plain TypeScript, asking a model only where a step needs judgement. Node 22.18 or newer, one SQLite file, MIT licensed. Source: https://github.com/carlosmartinezt/chloejs. Package: https://www.npmjs.com/package/@chloejs/core. `npx skills add carlosmartinezt/chloejs -y` installs a skill that says the same, for an agent to have before it reaches this site. The pages below are the same guides as the package carries, for the latest release. A job is an async TypeScript function made of steps. `work.step` is plain code, `work.model` asks a model one question and checks the answer against a schema, `work.agent` hands a model a goal and some tools within limits on turns and spending, and `work.ask` stops and waits for a person, for days if need be. Jobs run on a cron line, from a chat (Telegram, Slack) or an HTTP API, or by hand, and every run records each step and what it cost. Pick Chloe if: - You want to write your agents in code, and choose which steps an LLM handles. - Your agents are jobs: on a schedule, from a chat, or started by hand. - You want to see what every step did, and what it cost. - You want to own it: on your own machine, with any LLM, in one process and one SQLite file. Pick something else if: - You want an LLM to choose every step, the way a chat assistant does. - You need the work shared across many machines, or a hosted platform to run it. - You are building an app around a model, where the chat is the product. ## Questions - [TypeScript AI agent questions, answered](https://chloejs.org/faq.md): Which framework to pick, how to test and run an agent, and when Chloe is the wrong choice, each with the answer first. ## Docs - [Start](https://chloejs.org/docs/start.md): Install, run setup, and what each file it writes is for. - [An agent](https://chloejs.org/docs/agents.md): Every option defineAgent takes, what each one controls, and where an agent's files go. - [Abilities](https://chloejs.org/docs/abilities.md): The tools chloe brings to an agent: which ability adds each one, what it does, what is on by default, and the tools every agent has with no ability. - [Step, model, agent](https://chloejs.org/docs/primitives.md): The three kinds of step a job is made of, which one to use, and the options and limits of each. - [A job is a workflow](https://chloejs.org/docs/jobs.md): Every option a job takes, what its code is handed, when it runs, and the one rule that makes carrying on after a pause safe. - [Asking a person](https://chloejs.org/docs/asking-a-person.md): A job stops, sends its question to whoever should answer it, and carries on when they do. - [A prompt with tools](https://chloejs.org/docs/prompts.md): A job that is only words, the four keys it takes, skills and scripts, and what an agent may change about itself. - [Tools](https://chloejs.org/docs/tools.md): What a tool is, the ones chloe ships and what each is bound to, and how to write your own. - [Channels](https://chloejs.org/docs/channels.md): Putting an agent on Telegram, Slack, Discord, WhatsApp or email, in a chat box on your website, or opening it to another system over HTTP. What to set for each, and every option. - [Telegram](https://chloejs.org/docs/channels-telegram.md): Putting an agent on Telegram: the bot token, who may write, groups, and every option. - [Slack](https://chloejs.org/docs/channels-slack.md): Putting an agent on Slack, connected out with no public address: the two tokens, the scopes, and every option. - [Discord](https://chloejs.org/docs/channels-discord.md): Putting an agent on Discord, connected out with no public address: the bot, its token, the one switch it needs, and every option. - [WhatsApp](https://chloejs.org/docs/channels-whatsapp.md): Putting an agent on a WhatsApp number through Meta's own API, delivered through your web server, and every option. - [Email](https://chloejs.org/docs/channels-email.md): Conversations by email, from an address made for each one, through Gmail, a mailbox with an app password, or a mailbox of your own: setting it up, which replies it takes, and every option. - [HTTP](https://chloejs.org/docs/channels-http.md): Opening an agent to another system: one POST, one turn, one reply, with a token. - [A web page](https://chloejs.org/docs/channels-web.md): A chat box on your own site, talking to an agent: the pass your server hands out, what a visitor gets, the limits, and every option. - [Connections](https://chloejs.org/docs/connections.md): Signing in to Google, sending mail through Resend, searching through Brave, which address each kind of mail comes from, a service's MCP server, and an account chloe does not ship. - [Models](https://chloejs.org/docs/models.md): Which model answers, how each call reaches it and who pays, every model setting, and picking one from a chat. - [Settings and secrets](https://chloejs.org/docs/settings.md): What goes in chloe.config.ts, what goes in .env, and a map of every setting. - [Testing and evals](https://chloejs.org/docs/testing.md): Code is tested, prompts are scored, and which to reach for. - [The site, the API, and the run record](https://chloejs.org/docs/the-page.md): What a run writes down, the dashboard and the API, reaching them from another machine, an agent's memory, and where state lives. - [One person, and the people you invite](https://chloejs.org/docs/one-person.md): What belongs to the machine, what belongs to a person, and what somebody you invite can see and do. - [The entrances](https://chloejs.org/docs/entrances.md): What the package publishes, and where to import each thing from. - [Build an AI agent in TypeScript](https://chloejs.org/docs/build-an-ai-agent.md): An AI agent in Chloe is a TypeScript file listing its jobs, tools and channels. Here is one, with a model asked only where it is needed. - [Run an AI agent on a schedule](https://chloejs.org/docs/schedules.md): Give a job a cron line and it runs on its own, in your timezone, with every run written down and no two runs overlapping. ## Examples - [An AI agent that emails you, in one file](https://chloejs.org/examples/one-file.md): A TypeScript AI agent in one file: a job asks a model for a short note and emails it to you. Run it with node, or from your crontab. - [A Telegram AI agent that reads your Gmail](https://chloejs.org/examples/chat.md): A TypeScript AI agent on Telegram with one Gmail tool: ask it about your inbox in plain words. One file. - [An AI agent that asks for approval before it acts](https://chloejs.org/examples/ask-first.md): A TypeScript agent job that stops and asks you on Telegram before deleting anything, and does nothing if you never answer. One file. - [An autonomous AI agent with a budget and a step limit](https://chloejs.org/examples/figure-it-out.md): A TypeScript AI agent given a goal and a web reader picks its own steps, capped at 15 steps and 25 cents, then emails what it found. One file. ## Reference - [@chloejs/core](https://chloejs.org/reference/chloejs.md): Everything an agent, a job, a tool or a channel is written with. - [@chloejs/core/services](https://chloejs.org/reference/services.md): The work a job does without asking anybody, called from a step. - [@chloejs/core/tools/gmail](https://chloejs.org/reference/tools-gmail.md): Reading, answering and sending mail, as the person signed in to Google. - [@chloejs/core/tools/calendar](https://chloejs.org/reference/tools-calendar.md): The events on a Google calendar, and adding one that invites nobody. - [@chloejs/core/tools/drive](https://chloejs.org/reference/tools-drive.md): Finding files in one part of Google Drive, and reading one as text. - [@chloejs/core/tools/resend](https://chloejs.org/reference/tools-resend.md): Sending one email through Resend, on a key. - [@chloejs/core/tools/email](https://chloejs.org/reference/tools-email.md): Starting an email conversation, for an agent on the email channel. - [@chloejs/core/tools/web](https://chloejs.org/reference/tools-web.md): Reading a public web page. - [@chloejs/core/tools/fs](https://chloejs.org/reference/tools-fs.md): One folder, as tools: list, read, search, write and edit. - [@chloejs/core/channels](https://chloejs.org/reference/channels.md): The ways an agent is reached: Telegram, Slack and the API, bound in its agent.ts. - [@chloejs/core/connections](https://chloejs.org/reference/connections.md): A service's MCP server, for an agent's connections. - [@chloejs/core/timer](https://chloejs.org/reference/timer.md): When a job runs, written the way it is said. - [@chloejs/core/scorers](https://chloejs.org/reference/scorers.md): How a run is marked: what it did, and what it said. - [@chloejs/core/test](https://chloejs.org/reference/test.md): Saying whether one thing came out right, for a job's own test file. ## Optional - [Everything above in one file](https://chloejs.org/llms-full.txt) - [The dashboard](https://chloejs.org/dashboard): built into the runtime on your machine, and reached from elsewhere through your own tunnel or web server - [AI agent frameworks compared](https://chloejs.org/compare.md): Chloe, OpenClaw, Hermes Agent, Mastra, eve, Google's ADK, LangChain.js, the OpenAI Agents SDK and the Claude Agent SDK side by side: written in code, schedules, cost, a dashboard, memory you can read, and who keeps the data. - [Chloe and OpenClaw](https://chloejs.org/compare/openclaw) - [Chloe and LangChain.js](https://chloejs.org/compare/langchain): Chloe compared with LangChain.js and LangGraph.js: TypeScript AI agents as async functions with steps, with schedules, waiting on a person and spending limits built in. - [Chloe and Mastra](https://chloejs.org/compare/mastra): Chloe compared with Mastra: two TypeScript AI agent frameworks with schedules, one with about 150 packages and one with 20. - [Chloe and the Vercel AI SDK](https://chloejs.org/compare/ai-sdk): Chloe compared with the Vercel AI SDK: where the AI SDK calls a model, Chloe adds schedules, waiting on a person, spending limits and a record of every run. - [Chloe and Vercel's eve](https://chloejs.org/compare/eve): Chloe compared with eve, Vercel's agent framework: both run TypeScript AI agents on a schedule, but in Chloe your code picks each step and asks a model only where it needs one. - [Chloe and Hermes Agent](https://chloejs.org/compare/hermes): Chloe compared with Hermes Agent: Hermes runs a prompt on a schedule, with a script before it; Chloe runs a TypeScript job that asks a model only at the steps that need it and can wait days for a person.