Limits are part of the API
Budgets in time, calls, tokens and dollars. Cancellation that reaches inside your tools, not just between steps.
Configure a run
Declare an agent as a class and its prompt as markdown. Run it with isolation, budgets and cancellation built in.

npm install -g @thenajs/cli
thena create my-agent
cd my-agent && npm install && npm startAn agent is this:
// src/agents/explorer/explorer.agent.ts
import { Agent } from "@thenajs/core";
import { ReadFileTool } from "../../tools/read-file.tool";
import { LocalOllamaProvider } from "../../providers/ollama.provider";
@Agent({
provider: LocalOllamaProvider,
tools: [ReadFileTool],
prompt: "./explorer.agent.md", // the behaviour lives in the markdown
})
export class ExplorerAgent {}<!-- src/agents/explorer/explorer.agent.md -->
You explore software projects.
Read the relevant files before answering. Prefer reading over guessing.Not one line to handle messages, call the API, detect a tool call or validate arguments. That is what the framework does.
Thena comes from Athena — and not by accident.
Athena is not the goddess of war. That is Ares. Athena is the goddess of strategic war, of wisdom, and of craft. She is the one who plans before acting, who hands the hero his tools, and who shows up to say when to stop.
That is the whole design brief. ThenaJS does not make your agent smarter. It makes it governed: it plans (@Workflow), it acts through what you hand it (@Tool), it knows its ceiling (budget), and it can be told to stop (abort, stop).
| If you want to… | Go to |
|---|---|
| know whether it fits your case | Introduction |
| get it running | Installation |
| build something, start to finish | Your first agent |
| see what to read next | Next steps |