AGENTS.md · JetBrains/koog
AGENTS.md from JetBrains/koog: 251 lines covering Project Structure, Build & Commands, Code Style, Quality Gates and more.
Template by JetBrains
Install
Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/JetBrains/koog/develop/AGENTS.md -o AGENTS.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documentation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.
- For
- Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
- Length
- 251 lines
- File
AGENTS.md
Sections
- Project Structure
- Build & Commands
- Code Style
- Quality Gates
- Architecture
- Testing
- Security
- Configuration
- Development Workflow
First lines (shown under the repo's Apache-2.0 license)
# Koog AI Agent Framework
Koog is a Kotlin multiplatform framework for building AI agents with graph-based workflows.
It supports JVM and JS targets and integrates with multiple LLM providers
(OpenAI, Anthropic, Google, OpenRouter, Ollama) and Model Context Protocol (MCP).
## Project Structure
The project follows a modular architecture with a clear separation of concerns:
```
koog/
├── agents/
│ ├── agents-core/ # Core abstractions (AIAgent, AIAgentStrategy, AIAgentEnvironment)
│ ├── agents-tools/ # Tool infrastructure (Tool<TArgs, TResult>, ToolRegistry, AIAgentTool)
│ ├── agents-features-*/ # Feature implementations (memory, tracing, event handling)
│ ├── agents-mcp/ # Model Context Protocol integration
│ └── agents-test/ # Testing utilities and framework
├── prompt-*/ # LLM interaction layer (executors, models, structured data)
├── embeddings-*/ # Vector embedding support
├── examples/ # Reference implementations and usage patterns
└── build.gradle.kts # Root build configuration
```
## Build & Commands
### Development Commands
```bash
# Full build including tests
./gradlew build
# Build without tests
./gradlew assemble
# Run all JVM tests
./gradlew jvmTest
# Run all JS tests
./gradlew jsTest
# Test specific module
./gradlew :agents:agents-core:jvmTest
# Run specific test class
./gradlew jvmTest --tests "ai.koog.agents.test.SimpleAgentMockedTest"
# Run specific test method
./gradlew jvmTest --tests "ai.koog.agents.test.SimpleAgentMockedTest.test AIAgent doesn't call tools by default"
# Compile test classes only (for faster iteration)
./gradlew jvmTestClasses jsTestClasses
```
### Development Environment
- **JDK**: 17+ required for JVM target
- **Build System**: Gradle with version catalogs for dependency management
- **Targets**: JVM, JavaScript (Kotlin Multiplatform), WASM
- **IDE**: IntelliJ IDEA recommended with Kotlin plugin
## Code Style
- Follow [Kotlin Coding Conventions](https://kotlinlang.org/docs/coding-conventions.html)
- Use four spaces for indentation (consistent across all files)
- Name test functions as `testXxx` (no backticks for readability)
- Use descriptive variable and function names
- Prefer functional programming patterns where appropriate
- Use type-safe builders and DSLs for configuration
- Document public APIs with KDoc comments
- NEVER suppress compiler warnings without a good reason
## Quality Gates
Read and follow the Quality Gates section in /TESTING.md before considering any code change complete.
## Architecture
### Core Framework Components
**AIAgent** — Main orchestrator that executes strategies in coroutine scopes, manages tools via ToolRegistry,
runs features through AIAgentPipeline, and handles LLM communication via PromptExecutor.
**AIAgentStrategy** — Graph-based execution logic that defines workflows as subgraphs with start/finish nodes,
manages tool selection strategy, and handles termination/error reporting.
**ToolRegistry** — Centralized, type-safe tool management using a builder pattern: `ToolRegistry { tool(MyTool()) }`.
Supports registry merging with `+` operator.
**AIAgentFeature** — Extensible capabilities installed into AIAgentPipeline with configuration.
Features have unique storage keys and can intercept agent lifecycle events.
### Module Organization
1. **agents-core**: Core abstractions (`AIAgent`, `AIAgentStrategy`, `AIAgentEnvironment`)
2. **agents-tools**: Tool infrastructure (`Tool<TArgs, TResult>`, `ToolRegistry`, `AIAgentTool`)
3. **agents-features-***: Feature implementations (memory, tracing, event handling)
4. **agents-mcp**: Model Context Protocol integration
5. **prompt-***: LLM interaction layer (executors, models, structured data)
6. **embeddings-***: Vector embedding support
7. **examples**: Reference implementations and usage patterns
### Key Architectural Patterns
- **State Machine Graphs**: Agents execute as node graphs with typed edges
- **Feature Pipeline**: Extensible behavior via installable features with lifecycle hooks
- **Environment Abstraction**: Safe tool execution context preventing direct tool calls
- **Type Safety**: Generics ensure compile-time correctness for tool arguments/results
- **Builder Patterns**: Fluent APIs for configuration throughout the framework
## Testing
The framework provides comprehensive testing utilities in `agents-test` module:
### LLM Response Mocking
```kotlin
val mockLLMApi = getMockExecutor(toolRegistry, eventHandler) {
mockLLMAnswer("Hello!") onRequestContains "Hello"
mockLLMToolCall(CreateTool, CreateTool.Args("solve")) onRequestEquals "Solve task"
mockLLMAnswer("Default response").asDefaultResponse
}
```
### Tool Behavior Mocking
```kotlin
// Simple return value
mockTool(PositiveToneTool) alwaysReturns "The text has a positive tone."
// With additional actions
mockTool(NegativeToneTool) alwaysTells {
println("Tool called")
"The text has a negative tone."
}
// Conditional responses
mockTool(SearchTool) returns SearchTool.Result("Found") onArgumentsMatching {
args.query.contains("important")
}
```
### Graph Structure Testing
```kotlin
AIAgent(...) {
withTesting()
testGraph("test") {
val firstSubgraph = assertSubgraphByName<String, String>("first")
val secondSubgraph = assertSubgraphByName<String, String>("second")
assertEdges {
startNode() alwaysGoesTo firstSubgraph
firstSubgraph alwaysGoesTo secondSubgraph
}
verifySubgraph(firstSubgraph) {
val askLLM = assertNodeByName<String, Message.Response>("callLLM")
assertNodes {
askLLM withInput "Hello" outputs Message.Assistant("Hello!")Signals
- Stars
- 4,634
- Forks
- 495
- Open issues
- 115
- Last commit (this folder)
- Apr 23, 2026 (6 months ago)
- Last release
- Sep 24, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/JetBrains/koog
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from JetBrains
- 0.669score
Koog
JetBrains
Kotlin and Java framework for AI agents with tools, graph workflows, MCP, streaming and multiplatform targets.
HarnessAFreshness: A★ 4.6K - 0.612score
thinkrail
JetBrains
Agentic IDE built around the pi coding agent, with isolated git-worktree workspaces, living specs and MCP support
AgentAFreshness: A★ 1.1K - 0.594score
AGENTS.md · JetBrains/thinkrail
JetBrains
AGENTS.md from JetBrains/thinkrail: 146 lines covering Read context proportionally, Module structure and boundaries, Engine and architecture, Repo-wide…
TemplateAFreshness: A★ 1.1KCodex +5 - 0.450score
Junie
JetBrains
JetBrains coding agent that runs in the terminal, inside IDEs and in GitHub and GitLab, with models you bring.
AgentCFreshness: C - 0.421score

AI Assistant by JetBrains
JetBrains
AI Coding Agent, Chat, and Code Completion
PluginCFreshness: CVS Code +3
Cite this page
AGENTS.md · JetBrains/koog. Agent Mart. https://agentmart.dev/templates/jetbrains-koog-agents-md (last updated 2026-10-24)