{"slug": "introducing-chloe-an-agent-is-one-file-that-you-write", "title": "Introducing Chloe: An agent is one file that you write", "summary": "A developer has released Chloe, an open-source MIT-licensed TypeScript runtime for AI agents that lets developers set the level of autonomy for each step of a workflow, from plain API calls to model judgment, autonomous investigation, and human approval. Agents are defined as single TypeScript files specifying model, instructions, memory folder, tools, jobs, and channels, and the runtime records steps, model calls, tool calls, timing, and costs in SQLite for inspection via a dashboard. The project targets single-process, single-machine workloads and is not a distributed workflow engine.", "body_md": "I’ve been building Chloe ([https://chloejs.org/](https://chloejs.org/)), an open-source TypeScript runtime for AI agents.\n\nThe question behind it is simple: **how much of a workflow should an LLM?**\n\nSometimes you know exactly what needs to happen. Sometimes you need a model to interpret something. And sometimes you know the outcome you want, but you need an agent to investigate and figure out the steps.\n\nI wanted to express those choices in code, within the same workflow, and see what happened when it ran.\n\nConsider a job that checks customer support messages.\n\nLoading unread messages is an ordinary API call. Understanding whether a customer is describing a delivery problem may require a model. Investigating that problem might require an agent to look through orders and previous conversations. Issuing a large refund might require a person’s approval.\n\nThose are four different kinds of work. Giving a model control over all of them introduces decisions that the application could already make.\n\nChloe lets you choose the appropriate level of autonomy for each step:\n\nThe principle is **the least autonomy that does the job.**\n\nYour loops, conditions, and business rules stay in TypeScript. You decide when to call a model, what information it receives, and what happens with its answer.\n\nThis doesn’t make the model’s judgment deterministic. It makes the boundary around that judgment explicit.\n\nIn Chloe, you define an agent in TypeScript: its model, instructions, memory folder, tools, jobs, and channels.\n\nYou can read that definition and understand what you configured it to do. Another agent is another file, with its own responsibilities.\n\nJobs can run on a schedule, start from a conversation, or be triggered manually. An agent might send a morning briefing, answer questions about your email, or investigate something using a limited set of tools.\n\nFor an autonomous step, you can specify the tools available to it, limit how many steps it takes, and set a spending budget. When a decision needs human approval, the job can wait — even across a runtime restart.\n\nWriting the workflow is only part of the problem. Once it runs, I want to understand its behavior.\n\nChloe records the steps, model calls, and tool calls in a run, along with timing and model costs. You can see where ordinary code ended and model judgment began.\n\nThat distinction also helps with testing. Application logic gets ordinary tests; prompts get evals. A correct workflow and a good model decision are related, but they need different checks.\n\nThe dashboard gives you a place to inspect runs, chat with agents, and browse their memory.\n\nChloe runs on your own machine or server as a single Node.js process. Runtime state lives in SQLite, and agent memory lives in files you own.\n\nThe dashboard can run alongside it. An optional cloud connection lets you access that dashboard remotely while the runtime continues executing on your machine.\n\nLocal execution doesn’t mean every model runs locally: model calls go to the provider you configure.\n\nI’ve kept the architecture small deliberately. Chloe currently targets workloads that fit in one process on one machine. It isn’t a distributed workflow engine, and an interrupted active run is marked failed rather than automatically continuing from any arbitrary point.\n\nI’m interested in AI systems that fit into real processes: systems with clear inputs, useful outputs, visible costs, and decisions that someone can review.\n\nChloe is my way of exploring that through a runtime where the workflow is readable TypeScript and autonomy is a choice you make at each step.\n\nThere’s room for ordinary code, model judgment, autonomous investigation, and human decisions in the same application. I want the developer to be able to say clearly which one belongs where.\n\nChloe is open source under the MIT license. If this approach matches something you’re building, you can explore the examples ([https://chloejs.org/examples](https://chloejs.org/examples)), read the documentation, or look through the source on GitHub ([https://github.com/carlosmartinezt/chloejs](https://github.com/carlosmartinezt/chloejs)).\n\nI’d be interested to hear where you would draw the boundary between a workflow you write and one an agent figures out.", "url": "https://wpnews.pro/news/introducing-chloe-an-agent-is-one-file-that-you-write", "canonical_source": "https://dev.to/carlosmartinezt/introducing-chloe-an-agent-is-one-file-that-you-write-i59", "published_at": "2026-10-07 20:41:00+00:00", "updated_at": "2026-10-07 20:47:34.695275+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "large-language-models", "mlops"], "entities": ["Chloe", "TypeScript", "Node.js", "SQLite"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/introducing-chloe-an-agent-is-one-file-that-you-write", "markdown": "https://wpnews.pro/news/introducing-chloe-an-agent-is-one-file-that-you-write.md", "text": "https://wpnews.pro/news/introducing-chloe-an-agent-is-one-file-that-you-write.txt", "jsonld": "https://wpnews.pro/news/introducing-chloe-an-agent-is-one-file-that-you-write.jsonld"}}