Skip to content

ThenaJSThe TypeScript framework for LLM agents

Declare an agent as a class and its prompt as markdown. Run it with isolation, budgets and cancellation built in.

ThenaJS

Thirty seconds

bash
npm install -g @thenajs/cli
thena create my-agent
cd my-agent && npm install && npm start

An agent is this:

ts
// 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 {}
md
<!-- 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.

Why the name

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).

Where to go

If you want to…Go to
know whether it fits your caseIntroduction
get it runningInstallation
build something, start to finishYour first agent
see what to read nextNext steps