Skip to main content

agent-kitagent-kit

Everything an agent built on the Claude Agent SDK needs, solved once: human oversight, safety, memory and a terminal interface. You write only your domain.

npm install @falkenslab/agent-kit

Oversight you choose

Autonomous, guided (approval before anything visible or hard to undo) or step by step. Switch between guided and step by step in the middle of a conversation.

Guardrails in hooks, not prompts

File scope, protected paths, Bash only for subagents, only declared subagents, always in the foreground. Enforced on every tool call.

Memory between sessions

A built-in knowledge base the agent keeps as a wiki, originals kept untouched, and every conversation resumable with --continue or /resume.

A terminal UI like Claude Code

Full screen Ink chat with live markdown, folded tool calls, approval panels, history search, file mentions, themes and four languages.

Your domain, nothing else

An AgentSpec says who the agent is and what it has: prompt, MCP servers, skills, subagents. The kit wires the session around it.

Also without a terminal

The core never touches the terminal: drive the same agent from an Electron app or a server with a normalized event stream.

A whole agent in one file

The spec says who the agent is; buildSessionOptions() turns it into the SDK's session options, with the tools, hooks and guardrails of the chosen mode; runChatInk() gives it a full screen chat whose conversations can be resumed.

import path from "node:path";
import { buildSessionOptions, ensureClaudeAuth, runChatInk, type AgentSpec, type BaseSessionConfig } from "@falkenslab/agent-kit";

const spec: AgentSpec<BaseSessionConfig> = {
buildSystemPrompt: () => "You are a pirate cat who tells jokes. Always answer in character.",
buildMcpServers: () => ({}),
pluginRoots: () => [],
buildSubagents: () => undefined,
};

await ensureClaudeAuth();
const config: BaseSessionConfig = { mode: "guided", projectDir: process.cwd() };

await runChatInk((run) => buildSessionOptions(config, run.dir, spec, { run }), {
runsDir: path.resolve(".run"),
header: { title: "My agent" },
mode: config.mode,
fullscreen: true,
});

Captain Whiskers

The kit's example agent: a retired pirate cat with a crew of subagents, its own tools and skills, a theme and its texts in four languages. Walk through it.

Captain Whiskers running full screen in Windows Terminal