Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Optimize Lindy AI agent execution speed, reliability, and cost efficiency. Use when agents are slow, consuming too many credits, or producing inconsistent results. Trigger with phrases like "lindy performance", "lindy slow", "optimize lindy", "lindy latency", "lindy speed".
.claude/skills/jeremylongshore-lindy-performance-tuning/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 95% | 0% |
Lindy agents execute as multi-step workflows where each step (LLM call, action execution, API call, condition evaluation) adds latency and credit cost. Optimization targets: fewer steps, smaller models, faster actions, tighter prompts.
In the Tasks tab, open a completed task and review:
Common bottlenecks:
| Bottleneck | Symptom | Fix | |-----------|---------|-----| | Large model on simple task | High credit cost, slow | Switch to Gemini Flash | | Too many LLM steps | Long total duration | Consolidate into fewer steps | | Agent Step with many skills | Unpredictable path | Reduce to 2-4 focused skills | | Knowledge Base over-querying | Multiple KB searches | Increase Max Results per query | | Sequential when parallel possible | Unnecessary waiting | Use loop with Max Concurrent > 1 |
The single biggest performance lever. Match model to task complexity:
| Task | Recommended Model | Speed | Credits | |------|-------------------|-------|---------| | Route email to category | Gemini Flash | Fast | ~1 | | Extract fields from text | GPT-4o-mini | Fast | ~2 | | Draft short response | Claude Sonnet | Medium | ~3 | | Complex multi-step analysis | GPT-4 / Claude Opus | Slow | ~10 | | Simple phone call | Gemini Flash | Fast | ~20/min | | Complex phone conversation | Claude Sonnet | Medium | ~20/min |
Rule of thumb: Start with the smallest model. Only upgrade if output quality is insufficient. Most classification and routing tasks work fine with Gemini Flash.
Before (3 LLM calls, ~9 credits):
Step 1: Classify email (LLM)
Step 2: Extract key entities (LLM)
Step 3: Generate response (LLM)After (1 LLM call, ~3 credits):
Step 1: Classify, extract entities, and generate response (single LLM prompt)Consolidated prompt:
Analyze this email and return JSON with:
1. "classification": one of [billing, technical, general]
2. "entities": {customer_name, product, issue_type}
3. "draft_response": professional reply under 150 words
Email: {{email_received.body}}Replace AI-powered fields with Set Manually mode when values are predictable:
| Field | Instead of AI Prompt | Use Set Manually | |-------|---------------------|------------------| | Slack channel | "Post to the support channel" | #support-triage | | Email subject | "Create an appropriate subject" | [Ticket] {{email_received.subject}} | | Sheet column | "Determine the right column" | Column A |
Each Set Manually field saves one LLM inference (~1 credit).
Search for the customer's specific product issue. Focus on: {{extracted_entities.product}} {{extracted_entities.issue_type}}
Not: "Search for relevant information" (too vague, wastes results)
Prevent wasted runs with precise trigger filters:
Before: Email Received (all emails) → 200 runs/day → 600 credits
After: Email Received (label: "support" AND NOT from: "noreply@")
→ 30 runs/day → 90 credits (85% savings)Agent Steps (autonomous mode) are powerful but expensive — the agent may take unpredictable paths and use more actions than a deterministic workflow.
Use Agent Steps when: Next steps are genuinely uncertain (complex research, multi-source investigation, adaptive problem-solving)
Use deterministic actions when: Steps are predictable (classify -> route -> respond)
When using Agent Steps:
For batch processing, configure loops for efficiency:
| Agent Type | Expected Duration | Expected Credits | |-----------|------------------|-----------------| | Simple router (1 LLM + 1 action) | 2-5 seconds | 1-2 | | Email triage (classify + respond) | 5-15 seconds | 3-5 | | Research agent (search + analyze) | 15-60 seconds | 5-15 | | Multi-agent pipeline | 30-120 seconds | 10-30 | | Phone call | Real-time | ~20/min |
| Issue | Cause | Solution | |-------|-------|----------| | Agent timeout | Too many sequential steps | Consolidate steps, reduce skill count | | High credit burn | Large model + many steps | Downgrade model, merge LLM calls | | Inconsistent output | Agent Step choosing different paths | Switch to deterministic workflow | | KB search slow | Large knowledge base | Reduce fuzziness, increase specificity | | Loop runs too long | High max cycles, low concurrency | Increase Max Concurrent, lower Max Cycles |
Proceed to lindy-cost-tuning for budget optimization.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | pass→pass | 14,186 | 9,328 | -34% | 1 | 1 | 0% | 1,500 | 2,205 | +47% | 0 | 0 | — |
case-01 | fail→pass | 27,760 | 22,192 | -20% | 1 | 1 | 0% | 3,995 | 4,625 | +16% | 0 | 0 | — |
case-02 | fail→pass | 32,717 | 24,815 | -24% | 1 | 1 | 0% | 4,464 | 4,169 | -7% | 0 | 0 | — |
case-03 | fail→pass | 25,392 | 17,931 | -29% | 1 | 1 | 0% | 3,139 | 3,527 | +12% | 0 | 0 | — |
case-04 | fail→pass | 13,995 | 9,932 | -29% | 1 | 1 | 0% | 1,489 | 2,326 | +56% | 0 | 0 | — |
case-05 | fail→pass | 12,218 | 10,114 | -17% | 1 | 1 | 0% | 1,217 | 2,379 | +95% | 0 | 0 | — |
case-06 | fail→pass | 11,087 | 7,673 | -31% | 1 | 1 | 0% | 964 | 2,001 | +108% | 0 | 0 | — |
case-07 | pass→pass | 12,327 | 7,737 | -37% | 1 | 1 | 0% | 1,234 | 2,009 | +63% | 0 | 0 | — |
case-08 | pass→pass | 17,562 | 12,113 | -31% | 1 | 1 | 0% | 2,205 | 2,772 | +26% | 0 | 0 | — |
case-09 | fail→pass | 15,244 | 7,197 | -53% | 1 | 1 | 0% | 1,392 | 1,750 | +26% | 0 | 0 | — |
case-10 | pass→pass | 19,921 | 14,808 | -26% | 1 | 1 | 0% | 2,271 | 2,826 | +24% | 0 | 0 | — |
case-12 | pass→pass | 11,218 | 12,123 | +8% | 1 | 1 | 0% | 1,875 | 2,491 | +33% | 0 | 0 | — |
case-13 | pass→pass | 11,429 | 8,139 | -29% | 1 | 1 | 0% | 1,884 | 1,987 | +5% | 0 | 0 | — |
case-14 | fail→pass | 17,094 | 9,142 | -47% | 1 | 1 | 0% | 1,618 | 2,168 | +34% | 0 | 0 | — |
case-15 | pass→pass | 22,845 | 10,584 | -54% | 1 | 1 | 0% | 1,215 | 2,253 | +85% | 0 | 0 | — |
case-16 | fail→pass | 14,722 | 3,828 | -74% | 1 | 1 | 0% | 1,255 | 2,103 | +68% | 0 | 0 | — |
case-17 | fail→pass | 15,363 | 15,188 | -1% | 1 | 1 | 0% | 2,516 | 3,164 | +26% | 0 | 0 | — |
case-18 | pass→pass | 14,519 | 7,948 | -45% | 1 | 1 | 0% | 1,866 | 2,532 | +36% | 0 | 0 | — |
case-19 | fail→pass | 14,937 | 3,480 | -77% | 1 | 1 | 0% | 1,359 | 1,971 | +45% | 0 | 0 | — |
case-20 | fail→fail | 12,074 | 10,454 | -13% | 1 | 1 | 0% | 1,731 | 3,096 | +79% | 0 | 0 | — |
case-21 | pass→fail | 23,215 | 11,822 | -49% | 1 | 1 | 0% | 2,706 | 3,425 | +27% | 0 | 0 | — |
case-22 | pass→pass | 12,883 | 12,503 | -3% | 1 | 1 | 0% | 1,547 | 2,855 | +85% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.