{"id":3574,"date":"2026-10-26T09:00:29","date_gmt":"2026-10-26T15:00:29","guid":{"rendered":"https:\/\/yyc.ninja\/index.php\/2026\/10\/26\/testing-lfm-25-local-ai-agent-workflows\/"},"modified":"2026-10-26T09:00:29","modified_gmt":"2026-10-26T15:00:29","slug":"testing-lfm-25-local-ai-agent-workflows","status":"publish","type":"post","link":"https:\/\/yyc.ninja\/index.php\/2026\/10\/26\/testing-lfm-25-local-ai-agent-workflows\/","title":{"rendered":"Testing LFM 2.5 in Local AI Agent Workflows: Speed, Templates, and Trade-offs"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"630\" src=\"https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover.png\" alt=\"Testing LFM 2.5 in Local AI Agent Workflows: Speed, Templates, and Trade-offs\" class=\"wp-image-3573\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" srcset=\"https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover.png 1200w, https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-300x158.png 300w, https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-1024x538.png 1024w, https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-768x403.png 768w, https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-100x53.png 100w\" \/><\/figure>\n<p class=\"wp-block-paragraph\">Running local LLMs for agentic tasks often feels like balancing a scale: you want the reasoning depth of a massive model, but you need the blistering token-per-second (tps) throughput required for recursive loops, tool-calling, and multi-step agent environments. When Liquid AI released the <strong>LFM 2.5 24B-A2B<\/strong> model, practitioners jumped in to see how it performs as a lightweight utility model running alongside heavy hitters.<\/p>\n<p class=\"wp-block-paragraph\">Community testing reveals a nuanced picture. While the raw speed and hardware footprint make it an attractive drop-in replacement, users running local MLOps stacks have also run into classic launch hurdles, ranging from chat template bugs to specific trade-offs in reasoning, writing style, and tool usage.<\/p>\n<hr class=\"wp-block-separator\" \/>\n<h3 class=\"wp-block-heading\">The Hardware and Performance Profile<\/h3>\n<p class=\"wp-block-paragraph\">For local setups, hardware efficiency dictates everything. Community members testing the LFM 2.5 24B-A2B model via <code>llama.cpp<\/code> using ROCm on high-end hardware (such as an AMD W7900 or Strix Halo configurations) report impressive metrics:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Throughput:<\/strong> Users logged sustained speeds ranging from ~65 tps up to 95+ tps depending on quantization (such as Q4 or Q8 quants with Q8 KV cache).<\/li>\n<li><strong>VRAM Footprint:<\/strong> A Q8 quantization sits comfortably at around 30GB VRAM, supporting its full 128k context window, while smaller quants comfortably fit within 16GB GPUs.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">Compared to larger Mixture-of-Experts (MoE) classes or workhorse models like Ornith 1.5-35B, the primary advantage of LFM 2.5 is its raw speed. For repetitive, recursive mechanical tasks, waiting significantly less time per generation changes the cadence of local agent development.<\/p>\n<hr class=\"wp-block-separator\" \/>\n<h3 class=\"wp-block-heading\">The Chat Template Trap<\/h3>\n<p class=\"wp-block-paragraph\">No local model launch seems complete without a day-one friction point, and LFM 2.5 was no exception. Early testers immediately noticed that tool calls were failing consistently, causing some users to momentarily dismiss the model.<\/p>\n<p class=\"wp-block-paragraph\">As community debugging pointed out, the initial release suffered from an erroneous chat template. Once fixed (with community patches surfacing on Hugging Face (such as fixes for Unsloth quants)), tool calling began functioning correctly in frameworks like Pi Agent and Hermes Agent. <\/p>\n<p class=\"wp-block-paragraph\">This recurring pattern highlights an ongoing frustration in local MLOps: benchmarks often bypass the public chat template entirely, leaving users to deal with discrepancies between internal model capabilities and public release usability during the first critical weeks.\n<em>Note for implementers:<\/em> Always verify that you are using an updated chat template post-launch rather than relying strictly on day-one defaults.<\/p>\n<hr class=\"wp-block-separator\" \/>\n<h3 class=\"wp-block-heading\">Where It Excels: Mechanical Tasks, Coding, and Logic<\/h3>\n<p class=\"wp-block-paragraph\">In multi-model orchestration setups (such as an &#8220;AI-Council&#8221; pattern using an orchestrator like Deepseek Flash alongside council members like Qwen 27B and Ornith 35B), swapping in LFM 2.5 yields solid results for specific jobs:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Logic and Code:<\/strong> Initial tests on Prolog and limited Python tasks show dependable performance. However, community consensus suggests viewing it as a &#8220;utility model&#8221; rather than a top-tier software engineering replacement. It excels at writing localized adapters on the fly or acting as a code implementer alongside a larger reasoning model.<\/li>\n<li><strong>Presentation Style:<\/strong> When analyzing data (such as parsing through local Obsidian vaults or journal entries), users note that LFM 2.5 leans toward a direct, bullet-point presentation style rather than the more natural, prose-heavy generation style found in models like Gemma.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">While some developers found it slightly less reliable than alternatives like Qwen or Ornith for deep science-coding domains, its raw speed makes it a strong contender for simpler daily agentic workflows, such as summarizing open pull requests, daily briefings, and automated categorization.<\/p>\n<hr class=\"wp-block-separator\" \/>\n<h3 class=\"wp-block-heading\">Key Takeaways<\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>Blazing Fast Throughput:<\/strong> LFM 2.5 delivers high tokens-per-second (65-95+ tps) under <code>llama.cpp<\/code> and ROCm, making it ideal for recursive, multi-step agent loops.<\/li>\n<li><strong>Watch the Templates:<\/strong> Initial tool-call failures were tied to chat template bugs at launch; ensure you pull updated templates from Hugging Face before writing off its tool-use capabilities.<\/li>\n<li><strong>Utility vs. Deep Reasoning:<\/strong> It functions exceptionally well as a fast, mechanical workhorse or secondary council member, but may lag behind larger models in creative writing and advanced world knowledge.<\/li>\n<li><strong>Hardware Flexibility:<\/strong> With efficient quantization options scaling from Q4 to Q8, it comfortably fits within modern local setups ranging from 16GB VRAM cards up to high-end workstation rigs.<\/li>\n<\/ul>\n<hr class=\"wp-block-separator\" \/>\n<p class=\"wp-block-paragraph\"><strong>Original post:<\/strong><br><a href=\"https:\/\/www.reddit.com\/r\/LocalLLaMA\/comments\/1x68qma\/very_impressed_with_lfm2524a2b_in_pi_agent\/\" target=\"_blank\" rel=\"noopener nofollow\">https:\/\/www.reddit.com\/r\/LocalLLaMA\/comments\/1x68qma\/very_impressed_with_lfm2524a2b_in_pi_agent\/<\/a><\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Get the next one in your inbox<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Enjoyed this? I write about local AI, self-hosting, and cloud cost ninjutsu. Join the Ninja Dispatch for occasional, high-signal notes. No fluff.<\/p>\n\n\n\n\t\t\t<form id=\"sib_signup_form_2\" method=\"post\" class=\"sib_signup_form\">\n\t\t\t\t<div class=\"sib_loader\" style=\"display:none;\"><img\n\t\t\t\t\t\t\tsrc=\"https:\/\/yyc.ninja\/wp-includes\/images\/spinner.gif\" alt=\"loader\"><\/div>\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_action\" value=\"subscribe_form_submit\">\n\t\t\t\t<input type=\"hidden\" name=\"sib_form_id\" value=\"2\">\n                <input type=\"hidden\" name=\"sib_form_alert_notice\" value=\"Please fill out all required fields.\">\n                <input type=\"hidden\" name=\"sib_form_invalid_email_notice\" value=\"Please enter a valid email address.\">\n                <input type=\"hidden\" name=\"sib_security\" value=\"c13918bddc\">\n\t\t\t\t<div class=\"sib_signup_box_inside_2\">\n\t\t\t\t\t<div style=\"\/*display:none*\/\" class=\"sib_msg_disp\">\n\t\t\t\t\t<\/div>\n                    \t\t\t\t\t<p class=\"sib-email-area\">\n    <input type=\"email\" class=\"sib-email-area\" name=\"email\" placeholder=\"you@example.com\" required=\"required\">\n<\/p>\n<p class=\"sib-FIRSTNAME-area\">\n    <input type=\"text\" class=\"sib-FIRSTNAME-area\" name=\"FIRSTNAME\" placeholder=\"First name (optional)\">\n<\/p>\n<input type=\"hidden\" class=\"sib-SOURCE_DOMAIN-area\" name=\"SOURCE_DOMAIN\" value=\"yyc.ninja\">\n<input type=\"hidden\" class=\"sib-SIGNUP_SOURCE-area\" name=\"SIGNUP_SOURCE\" value=\"post\">\n<p>\n    <input type=\"submit\" class=\"sib-default-btn\" value=\"Join the Ninja Dispatch\">\n<\/p>\n<p class=\"ninja-fineprint\">No spam. Unsubscribe anytime.<\/p>\t\t\t\t<\/div>\n\t\t\t<\/form>\n\t\t\t<style>\n\t\t\t\tform#sib_signup_form_2{background:#192a3d;border-radius:10px;padding:16px;font-family:inherit}form#sib_signup_form_2 input[type=text],form#sib_signup_form_2 input[type=email],form#sib_signup_form_2 select{width:100%;box-sizing:border-box;margin:0 0 10px 0;padding:10px 12px;border:1px solid #33465c;border-radius:8px;background:#0f1c29;color:#e8eef5;font-size:14px}form#sib_signup_form_2 input::placeholder{color:#8a9bb0}form#sib_signup_form_2 .sib-default-btn{width:100%;margin:2px 0 0 0;padding:11px 14px;background:#e63946;color:#ffffff;border:0;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer}form#sib_signup_form_2 .sib-default-btn:hover{background:#d02f3c}form#sib_signup_form_2 p{margin:0 0 10px 0}form#sib_signup_form_2 .ninja-fineprint{margin:8px 0 0;font-size:11px;color:#8a9bb0;text-align:center}form#sib_signup_form_2 p.sib-alert-message {\n    padding: 6px 12px;\n    margin-bottom: 20px;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    -webkit-box-sizing: border-box;\n    -moz-box-sizing: border-box;\n    box-sizing: border-box;\n}\nform#sib_signup_form_2 p.sib-alert-message-error {\n    background-color: #f2dede;\n    border-color: #ebccd1;\n    color: #a94442;\n}\nform#sib_signup_form_2 p.sib-alert-message-success {\n    background-color: #dff0d8;\n    border-color: #d6e9c6;\n    color: #3c763d;\n}\nform#sib_signup_form_2 p.sib-alert-message-warning {\n    background-color: #fcf8e3;\n    border-color: #faebcc;\n    color: #8a6d3b;\n}\n\t\t\t<\/style>\n\t\t\t\n","protected":false},"excerpt":{"rendered":"<p>Running local LLMs for agentic tasks often feels like balancing a scale: you want the reasoning depth of a massive model, but you need the blistering token-per-second (tps) throughput required for recursive loops, tool-calling, and multi-step agent environments. When Liquid AI released the LFM 2.5\u2026<\/p>\n","protected":false},"author":1,"featured_media":3573,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[31,26,25],"class_list":["post-3574","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-how-to","tag-ai-agents","tag-llm","tag-local-ai"],"featured_image_urls_v2":{"full":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover.png",1200,630,false],"thumbnail":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-150x150.png",150,150,true],"medium":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-300x158.png",300,158,true],"medium_large":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-768x403.png",768,403,true],"large":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-1024x538.png",1024,538,true],"RoboGalleryMansoryImagesCenter":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-600x630.png",600,630,true],"RoboGalleryPreload":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover-100x53.png",100,53,true],"1536x1536":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover.png",1200,630,false],"2048x2048":["https:\/\/yyc.ninja\/wp-content\/uploads\/2026\/10\/cg-testing-lfm-25-local-ai-agent-workflows-cover.png",1200,630,false]},"post_excerpt_stackable_v2":"<p>Running local LLMs for agentic tasks often feels like balancing a scale: you want the reasoning depth of a massive model, but you need the blistering token-per-second (tps) throughput required for recursive loops, tool-calling, and multi-step agent environments. When Liquid AI released the LFM 2.5\u2026<\/p>\n","category_list_v2":"<a href=\"https:\/\/yyc.ninja\/index.php\/category\/how-to\/\" rel=\"category tag\">How To Ninja<\/a>","author_info_v2":{"name":"YYC Ninja","url":"https:\/\/yyc.ninja\/index.php\/author\/admin\/"},"comments_num_v2":"0 comments","_links":{"self":[{"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/posts\/3574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/comments?post=3574"}],"version-history":[{"count":0,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/posts\/3574\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/media\/3573"}],"wp:attachment":[{"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/media?parent=3574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/categories?post=3574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yyc.ninja\/index.php\/wp-json\/wp\/v2\/tags?post=3574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}