{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-18-llm-echo-0-5/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "I'm working towards a new [LLM](https://llm.datasette.io/) release, and testing PRs caused me to revisit the `llm-echo` debug plugin. This plugin provides a \"model\" which doesn't involve an LLM at all - it just repeats back the prompts that have been fed to it. The new release now updates the simulated token usage counts to take tool calls, system prompts, and reasoning tokens into account.\n\nExample usage:\n\n```\nuvx --with llm-echo llm -m echo 'hi there' -o thinking 1 --usage\n```\n\nOutputs:\n\n```\nFirst I consider the prompt, then I decide what to say.\n{\n  \"prompt\": \"hi there\",\n  \"system\": \"\",\n  \"attachments\": [],\n  \"stream\": true,\n  \"previous\": []\n}\nToken usage: 2 input, 24 output\n```\n",
  "authors": [],
  "captured_at": "2026-10-19T01:05:33.800883674+00:00",
  "category": "programming",
  "content_html": "<p>I'm working towards a new <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://llm.datasette.io/\">LLM</a> release, and testing PRs caused me to revisit the <code>llm-echo</code> debug plugin. This plugin provides a &quot;model&quot; which doesn't involve an LLM at all - it just repeats back the prompts that have been fed to it. The new release now updates the simulated token usage counts to take tool calls, system prompts, and reasoning tokens into account.</p>\n<p>Example usage:</p>\n<pre><code><span class=\"code-snippet\">uvx --with llm-echo llm -m echo &#39;hi there&#39; -o thinking 1 --usage\n</span></code></pre>\n<p>Outputs:</p>\n<pre><code><span class=\"code-snippet\">First I consider the prompt, then I decide what to say.\n{\n  &quot;prompt&quot;: &quot;hi there&quot;,\n  &quot;system&quot;: &quot;&quot;,\n  &quot;attachments&quot;: [],\n  &quot;stream&quot;: true,\n  &quot;previous&quot;: []\n}\nToken usage: 2 input, 24 output\n</span></code></pre>\n",
  "content_markdown": "I'm working towards a new [LLM](https://llm.datasette.io/) release, and testing PRs caused me to revisit the `llm-echo` debug plugin. This plugin provides a \"model\" which doesn't involve an LLM at all - it just repeats back the prompts that have been fed to it. The new release now updates the simulated token usage counts to take tool calls, system prompts, and reasoning tokens into account.\n\nExample usage:\n\n```\nuvx --with llm-echo llm -m echo 'hi there' -o thinking 1 --usage\n```\n\nOutputs:\n\n```\nFirst I consider the prompt, then I decide what to say.\n{\n  \"prompt\": \"hi there\",\n  \"system\": \"\",\n  \"attachments\": [],\n  \"stream\": true,\n  \"previous\": []\n}\nToken usage: 2 input, 24 output\n```\n",
  "dateCreated": "2026-10-19T01:05:33.800883674+00:00",
  "date_created": "2026-10-18T23:16:16+00:00",
  "date_modified": "2026-10-18T23:16:16+00:00",
  "date_published": "2026-10-18T23:16:16+00:00",
  "description": "Release: llm-echo 0.5 I'm working towards a new LLM release, and testing PRs caused me to revisit the llm-echo debug plugin. This plugin provides a \"model\" which doesn't involve an LLM at all - it just repeats back the prompts that have…",
  "external_url": "https://simonwillison.net/2026/Oct/18/llm-echo/",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/simonwillison-net/2026/10/2026-10-18-llm-echo-0-5.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/simonwillison-net/2026/10/2026-10-18-llm-echo-0-5.md"
  },
  "id": "urn:aggr:item:f4bd5c295b915a8d37e86cb1e7d011ce24a6731b",
  "isBasedOn": {
    "@id": "https://simonwillison.net/2026/Oct/18/llm-echo/"
  },
  "mainEntity": {
    "@id": "https://simonwillison.net/2026/Oct/18/llm-echo/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-18-llm-echo-0-5/#webpage"
    },
    "dateModified": "2026-10-18T23:16:16+00:00",
    "datePublished": "2026-10-18T23:16:16+00:00",
    "headline": "llm-echo 0.5",
    "timeRequired": "PT1M",
    "url": "https://simonwillison.net/2026/Oct/18/llm-echo/",
    "wordCount": 105
  },
  "name": "Archived snapshot: llm-echo 0.5",
  "preview": null,
  "reading_minutes": 1,
  "replicated_at": null,
  "source": "simonwillison-net",
  "source_name": "Simon Willison's Weblog",
  "summary": "Release: llm-echo 0.5 I'm working towards a new LLM release, and testing PRs caused me to revisit the llm-echo debug plugin. This plugin provides a \"model\" which doesn't involve an LLM at all - it just repeats back the prompts that have been fed to it. The new release now updates the simulated token usage counts to take tool calls, system prompts, and reasoning tokens into account. Example usage: uvx --with llm-echo llm -m echo 'hi there' -o thinking 1 --usage Outputs: First I consider the prompt, then I decide what to say. { \"prompt\": \"hi there\", \"system\": \"\", \"attachments\": [], \"stream\": true, \"previous\": [] } Token usage: 2 input, 24 output Tags: llm",
  "tags": [
    "llm"
  ],
  "temporalCoverage": "2026-10-19T01:05:33.800883674+00:00",
  "title": "llm-echo 0.5",
  "url": "https://aggr.aymericbeaumet.com/items/simonwillison-net/2026-10-18-llm-echo-0-5/",
  "word_count": 105
}