evertir.com

exo

scroll
exo — session
Forget AGENTS.md
Removing 1 file from context. 23k tokens freed.
exo Done.
Talk to it

Context is a conversation.

Tell Exo to drop a file and it leaves the window that turn — the tokens come straight back. No restart, no rebuild, no praying the harness forgets what you told it to forget.

What's in the model's head is yours to edit, mid-thought.

Or write it

Context-as-Code.

The harness is inert — it assembles nothing on its own. No hidden system prompt, no auto-loaded files, no injected date. Whatever .exo.context.ts returns is the entire context the model sees.

AGENTS.md is a wish. context.ts is a program.”

.exo.context.ts · runtime modifiable
// you own this file. the harness is inert —
// whatever you return is the whole context.
import type { Env, Ctx, Msg, Compaction } from "exo";

// front of the system prompt, loaded once → cached.
// keep it stable; volatile data here busts the cache.
export function alwaysPresentLoadedOnce(env: Env): string {
  return env.readFile(`${env.cwd}/AGENT.md`);
}

// re-run every turn, after the cached prefix —
// the home for volatile data like the clock.
export function eachTurnBeforeUserMessage(env: Env): string {
  return `Current time: ${env.now.toISOString()}`;
}

// you own where history comes from.
export function conversation(ctx: Ctx): Msg[] {
  return ctx.linearize(ctx.sessionEntries, ctx.leafId);
}

// compact when the window gets tight…
export function shouldCompact(ctx: Ctx): boolean {
  return ctx.budget.usedPercent > 80;
}

// …and how. summarize the older half, keep recent.
export function compact(ctx: Ctx): Promise<Compaction> {
  return ctx.summarizeOlder();
}
AGENTS.md SOUL.md CLAUDE.md GEMINI.md .cursorrules AGENT.md .windsurfrules copilot-instructions.md .clinerules

Too many agent conventions?

Exo has none. Load all or none — assemble your context-as-code.

Your context deserves a compiler, not a markdown file.

.exo.context.ts › alwaysPresentLoadedOnce
export function alwaysPresentLoadedOnce(env: Env): string[] {
  return [
    env.readFile(`${env.cwd}/ALWAYS_LOADED.md`),
  ];
}