This plugin provides a simple way to chat with AI in JMeter. Feather Wand serves as your intelligent assistant for JMeter test plan development, optimization, and troubleshooting.
🪄 About the name: The name "Feather Wand" was suggested by my children who were inspired by an episode of the animated show Bluey. In the episode, a simple feather becomes a magical wand that transforms the ordinary into something special (heavy) - much like how this plugin aims to transform your JMeter experience with a touch of AI magic!

@this command to get detailed information about the currently selected element@code command to extract code blocks from AI responses into the JSR223 editor@usage command to get usage examples for JMeter components@lint command to automatically rename elements in your test plan for better organization and readability@optimize command to get optimization recommendations for the currently selected element in your test plan@wrap command to intelligently group HTTP samplers under Transaction Controllers for better organization and
reportingfeather wand under Available Plugins tab.Apply Changes and Restart JMeter button.lib/ext directory of your JMeter installation.jmeter-ai-sample.properties into your jmeter.properties file (located in the bin directory
of your JMeter installation) or into your user.properties file.The Feather Wand plugin can be configured through JMeter properties. Copy the jmeter-ai-sample.properties file content
to your jmeter.properties or user.properties file and modify the properties as needed.
| Property | Description | Default Value |
|---|---|---|
jmeter.ai.streaming.enabled |
Enable real-time streaming of AI responses (token-by-token display) | true |
jmeter.ai.response.chime |
Play an audio chime when AI responses complete | false |
When streaming is enabled (default), AI responses appear progressively in the chat as they are generated. You can cancel the response at any time using the Stop button that appears next to the Send button. This feature is supported by all five AI services: Claude, OpenAI, Google Gemini, DeepSeek, and Ollama. If you prefer to receive the complete response at once (non-streaming), set
jmeter.ai.streaming.enabled=false.
| Property | Description | Default Value |
|---|---|---|
anthropic.api.key |
Your Claude API key | Required |
claude.default.model |
Default Claude model to use | claude-sonnet-4-6 |
claude.temperature |
Temperature setting (0.0-1.0) | 0.5 |
claude.max.tokens |
Maximum tokens for AI responses | 1024 |
claude.max.history.size |
Maximum conversation history size | 10 |
claude.system.prompt |
System prompt that guides Claude's responses | See sample properties file |
anthropic.log.level |
Logging level for Anthropic API requests ("info" or "debug") | Empty (disabled) |
| Property | Description | Default Value |
|---|---|---|
openai.api.key |
Your OpenAI API key | Required |
openai.default.model |
Default OpenAI model to use | gpt-4o |
openai.temperature |
Temperature setting (0.0-1.0) | 0.5 |
openai.max.tokens |
Maximum tokens for AI responses | 1024 |
openai.max.history.size |
Maximum conversation history size | 10 |
openai.system.prompt |
System prompt that guides OpenAI's responses | See sample properties file |
openai.log.level |
Logging level for OpenAI API requests ("INFO" or "DEBUG") | Empty (disabled) |
| Property | Description | Default Value |
|---|---|---|
google.api.key |
Your Google AI API key | Required |
google.streaming.enabled |
Enable real-time streaming for Google Gemini | true |
google.default.model |
Default Google Gemini model to use | gemini-2.5-flash |
google.temperature |
Temperature setting (0.0-1.0) | 0.7 |
google.max.tokens |
Maximum tokens for AI responses | 4096 |
google.max.history.size |
Maximum conversation history size | 10 |
google.system.prompt |
System prompt that guides Gemini's responses | See sample properties file |
| Property | Description | Default Value |
|---|---|---|
ollama.host |
Ollama server host | http://localhost |
ollama.port |
Ollama server port | 11434 |
ollama.default.model |
Default Ollama model to use | deepseek-r1:1.5b |
ollama.temperature |
Temperature setting (0.0-1.0) | 0.5 |
ollama.max.history.size |
Maximum conversation history size | 10 |
ollama.thinking.mode |
Enable extended thinking (ENABLED or DISABLED) |
DISABLED |
ollama.thinking.level |
Thinking depth (LOW, MEDIUM, or HIGH) |
MEDIUM |
ollama.request.timeout.seconds |
HTTP request timeout in seconds (increase for thinking models) | 120 |
ollama.system.prompt |
System prompt that guides Ollama's responses | See sample properties file |
⚠️ When
ollama.thinking.mode=ENABLED, increaseollama.request.timeout.secondsto at least300to avoid timeout errors during long inference.
| Property | Description | Default Value |
|---|---|---|
jmeter.ai.refactoring.enabled |
Enable code refactoring for JSR223 script editor | true |
jmeter.ai.service.type |
The AI service to use for code refactoring ("anthropic", "openai", "ollama", "deepseek", or "google") | "anthropic" |
The AI CLI Terminal supports Claude Code, OpenAI Codex CLI, GitHub Copilot CLI, OpenCode, and *
Antigravity CLI*. The plugin
automatically detects which CLIs are available on your system's PATH and presents them in a dropdown selector.
Prerequisites:
| CLI | Binary Name | Installation Guide |
|---|---|---|
| Claude Code | claude |
Claude Code Quickstart |
| OpenAI Codex CLI | codex |
OpenAI Codex CLI |
| GitHub Copilot CLI | copilot |
GitHub Copilot CLI |
| OpenCode | opencode |
OpenCode |
| Antigravity CLI | agy |
Antigravity CLI |
| Property | Description | Default Value |
|---|---|---|
jmeter.ai.terminal.claudecode.enabled |
Enable the embedded AI CLI Terminal feature (applies to all supported CLIs) | true |
jmeter.ai.terminal.claudecode.path |
Full path to the claude executable (e.g., /usr/local/bin/claude or C:\...) |
Empty (auto-detect) |
jmeter.ai.terminal.claudecode.prompt |
Custom system prompt passed to the CLI (not recommended to change) | See sample properties file |
jmeter.ai.terminal.copilot.enabled |
Enable GitHub Copilot CLI in the AI CLI Terminal | false |
jmeter.ai.terminal.copilot.path |
Full path to the copilot executable |
Empty (auto-detect) |
jmeter.ai.terminal.copilot.prompt |
Custom system prompt for GitHub Copilot CLI | See sample properties file |
jmeter.ai.terminal.antigravity.enabled |
Enable Antigravity CLI detection in the terminal (requires agy on PATH) |
false |
jmeter.ai.terminal.antigravity.prompt |
Custom system prompt passed to Antigravity CLI | See sample properties file |
The system prompt defines how the AI (Claude or OpenAI) responds to your queries. You can customize this in the properties file to focus on specific aspects of JMeter or add your own guidelines.
claude.system.prompt, openai.system.prompt, google.system.prompt, deepseek.system.prompt, and
ollama.system.prompt can be configured separately in the properties file. The default prompts are designed to provide
helpful, JMeter-specific responses tailored to each AI model's capabilities.
Use the @usage command to view detailed token usage information for your AI interactions:
How to Use:
$ claude mcp add jmeter-ai \
-- python -m otcore.mcp_server <graph>