Needle
NativeChatcactus-compute/needleNobody serves this model right now. The market reopens when a seller comes online.
Performance
Measured from real, settled requests over the last 30 days. No synthetic benchmarks.
- Success rate
- 0%
- 8 finished requests, 30 days
Availability
Provider availability polled every minute by the platform itself, replayed hour by hour.
0% online over the last 3 days
Usage per day
What actually ran on the platform, per day over the last 30 days. Settled usage from receipts; nothing synthetic.
Show as table
| Day | Requests | Requests |
|---|---|---|
| Oct 15 | 0 | 0 |
| Oct 14 | 0 | 0 |
| Oct 13 | 0 | 0 |
| Oct 12 | 7 | 7 |
| Oct 11 | 0 | 0 |
| Oct 10 | 0 | 0 |
| Oct 9 | 0 | 0 |
| Oct 8 | 0 | 0 |
| Oct 7 | 0 | 0 |
| Oct 6 | 0 | 0 |
| Oct 5 | 0 | 0 |
| Oct 4 | 0 | 0 |
| Oct 3 | 0 | 0 |
| Oct 2 | 0 | 0 |
| Oct 1 | 0 | 0 |
| Sep 30 | 0 | 0 |
| Sep 29 | 0 | 0 |
| Sep 28 | 0 | 0 |
| Sep 27 | 0 | 0 |
| Sep 26 | 1 | 1 |
| Sep 25 | 0 | 0 |
| Sep 24 | 0 | 0 |
| Sep 23 | 0 | 0 |
| Sep 22 | 0 | 0 |
| Sep 21 | 0 | 0 |
| Sep 20 | 0 | 0 |
| Sep 19 | 0 | 0 |
| Sep 18 | 0 | 0 |
| Sep 17 | 0 | 0 |
| Sep 16 | 0 | 0 |
API
The API is OpenAI-compatible and uses the same price and sellers as shown here.
curl https://api.openmayhem.ai/v1/chat/completions \
-H "Authorization: Bearer $OPENMAYHEM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "cactus-compute/needle",
"messages": [{"role": "user", "content": "Hello"}],
"max_tokens": 2000
}'MCP
OpenMayhem runs its own MCP server, so Claude, Codex, Cursor and other AI apps can call this model and pay from your credit.
claude mcp add --transport http openmayhem \ https://mcp.openmayhem.ai/mcp \ --header "X-OpenMayhem-API-Key: $OPENMAYHEM_API_KEY"
Then ask your app, for example: "Use OpenMayhem Needle to answer this." It calls chat with cactus-compute/needle. Apps that support sign-in connect without a key, and you approve spending limits once.
Full request reference
POST /v1/chat/completionsCHAT Β· openai_chat_completions +
Working request
curl https://api.openmayhem.ai/v1/chat/completions \
-H "Authorization: Bearer $OPENMAYHEM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"messages": [
{
"role": "user",
"content": "Hello"
}
],
"model": "cactus-compute/needle",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_tokens": 128,
"stream": false
}'Parameters
| Parameter | Required | Type | Default | Allowed values | Limits and shape |
|---|---|---|---|---|---|
messages | Required | array | β | β | min items 1; max items 1 [{"role":"user","content":"Hello"}] |
model | Required | string | β | Cactus-Compute/needle | β |
tools | Required | array | β | β | min items 1; max items 10 [{"type":"function","function":{"name":"get_time","description":"Get the current time","parameters":{"type":"object","properties":{}}}}] |
frequency_penalty | Optional | number | 0 | β | min 0; max 0 |
max_completion_tokens | Optional | integer | 128 | β | min 16; max 512 |
max_tokens | Optional | integer | 128 | β | min 16; max 512 |
metadata | Optional | object | β | β | JSON object; use the endpoint-specific schema shown in the examples |
min_p | Optional | number | 0 | β | min 0; max 0 |
parallel_tool_calls | Optional | boolean | true | true | β |
presence_penalty | Optional | number | 0 | β | min 0; max 0 |
seed | Optional | integer | 7 | β | min 0; max 4294967295 |
stream | Optional | boolean | false | β | β |
temperature | Optional | number | 0 | β | min 0; max 0 |
tool_choice | Optional | string | object | β | β | "auto" or an OpenAI tool-choice object |
top_k | Optional | integer | 0 | β | min 0; max 1 |
top_p | Optional | number | 1 | β | min 1; max 1 |
user | Optional | string | β | β | min length 1; max length 512 |
Input shapes
{
"model": "cactus-compute/needle",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
]
}POST /v1/responsesRESPONSES Β· openai_responses +
Working request
curl https://api.openmayhem.ai/v1/responses \
-H "Authorization: Bearer $OPENMAYHEM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"input": "Hello",
"model": "cactus-compute/needle",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_output_tokens": 128,
"stream": false
}'Parameters
| Parameter | Required | Type | Default | Allowed values | Limits and shape |
|---|---|---|---|---|---|
input | Required | string | β | β | min length 1; max length 512 |
model | Required | string | β | Cactus-Compute/needle | β |
tools | Required | array | β | β | min items 1; max items 10 [{"type":"function","function":{"name":"get_time","description":"Get the current time","parameters":{"type":"object","properties":{}}}}] |
max_output_tokens | Optional | integer | 128 | β | min 16; max 512 |
metadata | Optional | object | β | β | JSON object; use the endpoint-specific schema shown in the examples |
min_p | Optional | number | 0 | β | min 0; max 0 |
parallel_tool_calls | Optional | boolean | true | true | β |
stream | Optional | boolean | false | β | β |
temperature | Optional | number | 0 | β | min 0; max 0 |
tool_choice | Optional | string | object | β | β | "auto" or an OpenAI tool-choice object |
top_k | Optional | integer | 0 | β | min 0; max 1 |
top_p | Optional | number | 1 | β | min 1; max 1 |
user | Optional | string | β | β | min length 1; max length 512 |
Input shapes
{
"model": "cactus-compute/needle",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
]
}Use this model through MCP
These calls use this modelβs exact live request contract. First estimate the unchanged request, then pass the returned estimate ID and maximum cost to the paid tool. Read the complete MCP guide.
chatCHAT +
Send this object to estimate_request. Review the result, then send the next object to the named paid tool without changing request.
{
"endpoint": "CHAT",
"model": "cactus-compute/needle",
"request": {
"messages": [
{
"role": "user",
"content": "Hello"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_tokens": 128,
"stream": false
}
}{
"model": "cactus-compute/needle",
"request": {
"messages": [
{
"role": "user",
"content": "Hello"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_tokens": 128,
"stream": false
},
"estimate_id": "<estimate_id from estimate_request>",
"max_cost_usd": "<maximum_cost_usd from estimate_request>"
}create_responseRESPONSES +
Send this object to estimate_request. Review the result, then send the next object to the named paid tool without changing request.
{
"endpoint": "RESPONSES",
"model": "cactus-compute/needle",
"request": {
"input": "Hello",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_output_tokens": 128,
"stream": false
}
}{
"model": "cactus-compute/needle",
"request": {
"input": "Hello",
"tools": [
{
"type": "function",
"function": {
"name": "get_time",
"description": "Get the current time",
"parameters": {
"type": "object",
"properties": {}
}
}
}
],
"max_output_tokens": 128,
"stream": false
},
"estimate_id": "<estimate_id from estimate_request>",
"max_cost_usd": "<maximum_cost_usd from estimate_request>"
}Agent drop-ins
These configurations make this exact model the main model in each harness. Create an API key first and keep it in OPENMAYHEM_API_KEY.
OpenCode+
Save this as opencode.json in your project, export the key, then select openmayhem/model in /models.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openmayhem": {
"npm": "@ai-sdk/openai-compatible",
"name": "OpenMayhem",
"options": {
"baseURL": "https://api.openmayhem.ai/v1",
"apiKey": "{env:OPENMAYHEM_API_KEY}"
},
"models": {
"cactus-compute/needle": {
"name": "needle",
"limit": {
"context": 1024,
"output": 1024
}
}
}
}
}
}export OPENMAYHEM_API_KEY="replace-with-your-openmayhem-api-key"
opencode --model "openmayhem/cactus-compute/needle"Claude Code+
Claude Code speaks Anthropic Messages. Claude Code Router 2.0.0 translates it to this model's Chat Completions endpoint and removes Claude-only cache metadata.
{
"LOG": false,
"API_TIMEOUT_MS": 3600000,
"Providers": [
{
"name": "openmayhem",
"api_base_url": "https://api.openmayhem.ai/v1/chat/completions",
"api_key": "$OPENMAYHEM_API_KEY",
"models": [
"cactus-compute/needle"
],
"transformer": {
"use": [
"cleancache"
]
}
}
],
"Router": {
"default": "openmayhem,cactus-compute/needle",
"background": "openmayhem,cactus-compute/needle",
"think": "openmayhem,cactus-compute/needle",
"longContext": "openmayhem,cactus-compute/needle",
"longContextThreshold": 16000
}
}npm install -g @anthropic-ai/claude-code @musistudio/claude-code-router@2.0.0
export OPENMAYHEM_API_KEY="replace-with-your-openmayhem-api-key"
export MAX_THINKING_TOKENS=0
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=1024
export CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1
ccr start &
ccr code
ccr stopCodex CLI+
Codex 0.80.0 is the tested Chat Completions compatibility release for this model. The key stays in the environment; config.toml contains no secret.
model = "cactus-compute/needle"
model_provider = "openmayhem"
model_context_window = 1024
[model_providers.openmayhem]
name = "OpenMayhem"
base_url = "https://api.openmayhem.ai/v1"
env_key = "OPENMAYHEM_API_KEY"
wire_api = "chat"
request_max_retries = 4
stream_max_retries = 5
stream_idle_timeout_ms = 3600000export OPENMAYHEM_API_KEY="replace-with-your-openmayhem-api-key"
npx -y @openai/codex@0.80.0Hermes Agent+
Hermes uses OpenMayhem as a named custom provider over Chat Completions. The key stays in OPENMAYHEM_API_KEY and is not stored in YAML.
providers:
openmayhem:
api: "https://api.openmayhem.ai/v1"
key_env: OPENMAYHEM_API_KEY
transport: chat_completions
default_model: "cactus-compute/needle"
models:
"cactus-compute/needle":
context_length: 1024
model:
default: "cactus-compute/needle"
provider: custom:openmayhem
api_mode: chat_completions
context_length: 1024
max_tokens: 1024curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
export OPENMAYHEM_API_KEY="replace-with-your-openmayhem-api-key"
hermes chatOpenClaw+
Merge this provider into openclaw.json. apiKey is an environment SecretRef, so the resolved key is not written to the file.
{
"models": {
"mode": "merge",
"providers": {
"openmayhem": {
"baseUrl": "https://api.openmayhem.ai/v1",
"apiKey": "${OPENMAYHEM_API_KEY}",
"api": "openai-completions",
"authHeader": true,
"timeoutSeconds": 3600,
"models": [
{
"id": "cactus-compute/needle",
"name": "needle",
"reasoning": false,
"input": [
"text"
],
"contextWindow": 1024,
"contextTokens": 1,
"maxTokens": 1024,
"compat": {
"supportsTools": true,
"supportsTemperature": true
}
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "openmayhem/cactus-compute/needle"
}
}
}
}export OPENMAYHEM_API_KEY="replace-with-your-openmayhem-api-key"
openclaw agent --local --model "openmayhem/cactus-compute/needle" --message "Hello"About this model
A small tool-calling model from Cactus Compute; its contract requires at least one tool in every request.
- Maker
- Cactus Compute
- Family
- Needle
How it is served
- Registered tiers
- T1 Β· T4
- Live tiers
- Not advertised
- Quantizations
- bf16
- Live routes
- 0
- Live providers
- 0
- Prompt processing
- Provider-visible
- Context capacity
- 1K
Routing providers
Accepted request parameters
From the network's signed model contract; anything else is rejected before a provider runs.
frequency_penaltyinputmax_completion_tokensmax_output_tokensmax_tokensmessagesmetadatamin_pmodelparallel_tool_callspresence_penaltyseedstreamtemperaturetool_choicetoolstop_ktop_puserPrice versions
| Version | From | Until |
|---|---|---|
| v6 | 2026-09-22 17:49 UTC | current |
| v5 | 2026-09-16 22:12 UTC | 2026-09-22 17:49 UTC |
| v4 | 2026-09-14 06:13 UTC | 2026-09-16 22:12 UTC |
| v3 | 2026-09-14 01:36 UTC | 2026-09-14 06:13 UTC |
| v2 | 2026-09-02 17:01 UTC | 2026-09-14 01:36 UTC |
| v1 | 2026-08-30 23:46 UTC | 2026-09-02 17:01 UTC |
Questions and answers
What does Needle cost on OpenMayhem?
Needle currently costs $0.0005 / M input Β· $0.002 / M output. There is no subscription: you buy credit and every request settles against a signed receipt for exactly what it used. Prices are versioned, and the full price history is published on this page.
Is Needle available right now?
No providers are online for Needle at this moment. Availability is polled every minute, and requests are rejected upfront rather than queued indefinitely.
How do I use Needle?
Send an OpenAI-compatible request to https://api.openmayhem.ai/v1/chat/completions with "model": "cactus-compute/needle" and your API key. Existing OpenAI SDKs work by changing the base URL. Create an account to get a key and starting credit.
Are my prompts stored?
OpenMayhem does not persist prompt or completion text. Requests are proxied to the serving provider and only billing metadata is retained: usage counts, the price applied, and the provider's signed receipt. The provider that serves a request necessarily processes its content.
