Skip to main content
Version: 0.4.0

FAQ

What is "The Brain" and why does the agent talk like a cartoon character?

The agent (src/agents/) roleplays as "The Brain" from the Pinky and the Brain cartoon, addressing you as "Pinky". Say hello and it will greet you, list its topics of expertise, and guide you from there — the persona is in the delivery, but the technical content stays accurate. See Agent Flow for the whole journey.

What topics can it help with?

Four, listed for you at the start of every conversation:

  • AWS Cloud Practitioner Certification - CLF-C02 exam prep.
  • Cellular Automata - Conway's Game of Life, Wolfram's rules, Lenia, particle life.
  • English for Certifications - IELTS, TOEFL, and Cambridge exam coaching.
  • Technical Interview Preparation - role-based roadmaps (React, Angular, JavaScript, Node.js, System Design, and more).

Once you pick a topic and a subtopic, The Brain asks whether you would like to learn about it (it teaches and tests your understanding) or have an article written about it (saved as markdown under ./articles/).

Which API key do I need?

ANTHROPIC_API_KEY. Anthropic is the only supported LLM provider — there is no fallback to another one. The model defaults to claude-sonnet-5 and can be changed with ANTHROPIC_MODEL.

What happens if I run the service without an LLM API key?

The service fails fast: validateConfig() throws and every entrypoint (index.ts, cli.ts, server.ts, mcp.ts) exits immediately when ANTHROPIC_API_KEY is absent. If the agent is somehow built without a key, createChatModel() throws No Anthropic API key provided. There are no mock-response fallbacks — the agent either talks to Claude or reports an error.

Do I need AWS credentials to run the service locally?

No. src/storage/s3.ts automatically falls back to an in-memory mock store when the AWS SDK's default credential chain (AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, shared config, SSO/AWS_PROFILE, container/instance roles) resolves nothing. Local conversation state is always persisted via the SQLite checkpointer regardless of AWS configuration. Note that the deployed Lightsail service currently has no runtime AWS credentials either (see Infrastructure), so it falls back to the same mock in production.

Which entrypoint should I use?

  • Use the CLI for quick local testing.
  • Use the REST/SSE server to integrate with web clients, Slack, or Teams.
  • Use the MCP server to expose the agent to MCP clients like Claude Desktop.
  • Use the raw ACP server (or, for most editor integrations, the companion patb-cli project) to integrate with the Zed Editor.

How is conversation state persisted across turns?

Every workflow run is scoped to a thread_id. The SQLiteCheckpointer (src/storage/sqlite.ts) persists LangGraph checkpoints for each thread locally in state.db (configurable via SQLITE_DB_PATH), so subsequent runs with the same thread_id resume from prior state.

Where can I ask more questions or report issues?

Open an issue on GitHub.