[{"data":1,"prerenderedAt":584},["ShallowReactive",2],{"project-44110584":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":5,"maker":10,"posted_at":11,"year":12,"points":13,"comments":14,"rank_in_year":15,"shown_in_year":16,"top":17,"tier":18,"category":19,"subcategory":20,"format":21,"keywords":22,"reception":26,"sentiment":27,"stance_mix":28,"scored_comments":15,"aspects":33,"strip":42,"post_text":44,"what":45,"said":70,"maker_in_thread":175,"shape":186,"grid":191,"attempts":547,"same_week":548,"maker_shows":394,"maker_hidden":577,"reader_version":578,"card":579},"44110584","simonwillison.net","My LLM CLI tool can run tools now, from Python code or plugins","title","Show HN: My LLM CLI tool can run tools now, from Python code or plugins","https:\u002F\u002Fsimonwillison.net\u002F2025\u002FMay\u002F27\u002Fllm-tools\u002F","simonw",1748379183,2025,529,165,61,3837,2,"legend","ai","llm cli","cli",[20,23,24,25],"tool calling","llm plugins","python llm","mixed",0.24,{"positive":29,"neutral":30,"mixed":31,"critical":32},24,29,1,7,{"execution":34,"idea":36,"performance":38,"docs":40,"design":41},{"positive":35,"critical":31},3,{"positive":37,"critical":17},5,{"positive":39,"critical":31},0,{"positive":35,"critical":39},{"positive":17,"critical":31},[37,37,35,35,37,35,43,39,31,39,39,35,37,35,37,37,37,39,35,37,37,37,35,35,35,35,35,35,43,37,37,35,37,37,35,17,37,39,35,31],4,null,{"problem":46,"audience":44,"pricing":44,"motivation":44,"time_to_build":44,"stack":55,"openness":67,"stage":68,"team_size":69},{"value":47,"source":48,"evidence":49},"Gives a single interface to many LLMs and lets them call tools from Python code or plugins.","maker",[50,53],{"id":51,"by":10,"text":52},"44110825","I find it extremely useful as a research tool. It can talk to probably over 100 models at this point, providing a single interface to all of them and logging full details of…",{"id":54},"post",[56,63],{"value":57,"source":58,"evidence":59},"Python","inferred",[60],{"id":61,"by":10,"text":62},"44110881","Yeah I had a bit of an experiment with MCP this morning, to see if I could get a quick plugin demo out for it. It's a bit tricky! The official mcp Python library really wants you…",{"value":64,"source":48,"evidence":65},"SQLite",[66],{"id":51,"by":10,"text":52},"open_source","launched","unknown",{"praise":71,"objections":92,"requests":118,"questions":136,"alternatives":155},[72,81],{"value":73,"source":74,"evidence":75},"Useful research tool with logging of prompts and responses","commenter",[76,77],{"id":51,"by":10,"text":52},{"id":78,"by":79,"text":80},"44111958","hanatanaka1984","Great work Simon! I use your tool daily. Pipes and easy model switching for local (ollama) and remote makes this very easy to work with.",{"value":82,"source":74,"evidence":83},"Simple plugin and Python API for tool calling",[84,88],{"id":85,"by":86,"text":87},"44114382","rahimnathwani","Thanks for making this. I used it (0.26a0) last week to create a demo for a customer-facing chatbot using proprietary data. The key elements I had to write: - The system prompt -…",{"id":89,"by":90,"text":91},"44112865","samuel","This is great, and a feature I was hoping for, for a long time. At this point I would have expected something mcp or openapi based but probably is simpler and more flexible this…",[93,104,111],{"value":94,"source":74,"evidence":95},"Tool calling risks footguns like unintended actions",[96,100],{"id":97,"by":98,"text":99},"44111376","tantalor","This greatly opens up the risk of footguns. The doc [1] warns about prompt injection, but I think a more likely scenario is self-inflicted harm. For instance, you give a tool…",{"id":101,"by":102,"text":103},"44111846","nlh","Ok this is great and perfect timing -- I've been playing around with Warp (the terminal) and while I love the idea of their terminal-based \"agent\" (eg tool loop), I don't love…",{"value":105,"source":74,"evidence":106},"Updating via Homebrew removes installed plugins",[107],{"id":108,"by":109,"text":110},"44110814","sorenjan","Every time I update llm I have to reinstall all plugins, like gemini and ollama. My Gemini key is still saved, as are my aliases for my ollama models, so I don't get why the…",{"value":112,"source":74,"evidence":113},"Slow startup from expensive plugin imports",[114],{"id":115,"by":116,"text":117},"44111909","roxolotl","Simon thank you so much for this tool! I use it daily now since charmbraclet’s Mods[0] doesn’t support anthropics models. And now with tool calling it’ll be even more useful. I…",[119,123,129],{"value":120,"source":74,"evidence":121},"Per-call permission prompts for tools",[122],{"id":101,"by":102,"text":103},{"value":124,"source":74,"evidence":125},"Better tutorial and documentation",[126],{"id":127,"by":10,"text":128},"44111025","I really need to put together a better tutorial - there's a TON of documentation but it's scattered across a bunch of different places: - The official docs:…",{"value":130,"source":74,"evidence":131},"MCP support",[132],{"id":133,"by":134,"text":135},"44110809","oliviergg","Thank you for this release. I believe your library is a key component to unlocking the potential of LLMs without the limitations\u002Frestricitions of existing clients. Since you…",[137,148],{"value":138,"source":74,"evidence":139},"How does this differ from other CLI tools and LangChain tool calling?",[140,144],{"id":141,"by":142,"text":143},"44110660","behnamoh","what are the use cases for llm, the CLI tool? I keep finding tgpt or the bulletin AI features of iTerm2 sufficient for quick shell scripting. does llm have any special features…",{"id":145,"by":146,"text":147},"44113102","a_bonobo","How does this differ from langchain's tool calling?",{"value":149,"source":74,"evidence":150},"Whether tool calls work reliably across models",[151],{"id":152,"by":153,"text":154},"44111402","stavros","Have you guys had luck with tool calls? I made a simple assistant with access to my calendar, and most models fail to call the tool to add calendar events. GPT-4.1 also regularly…",[156,160,164,168],{"value":157,"source":74,"evidence":158},"LangChain",[159],{"id":145,"by":146,"text":147},{"value":161,"source":74,"evidence":162},"tgpt and iTerm2 AI features",[163],{"id":141,"by":142,"text":143},{"value":165,"source":74,"evidence":166},"Warp terminal agent",[167],{"id":101,"by":102,"text":103},{"value":169,"source":74,"evidence":170},"Claude Code",[171],{"id":172,"by":173,"text":174},"44125689","jasonriddle","@simonw, how much have you used Claude code? I'm wondering if it makes sense to use Claude code as the main driver, but have crafted specialized \"llm\" based tools for Claude to…",{"comments":176,"answered":177,"key":178},25,15,[179,182,185],{"id":180,"text":181},"44111529","Wow, that library is looking really great! I think I want a plugin hook that lets plugins take over the display of content by the tool. Just filed an issue:…",{"id":183,"text":184},"44111430","> This greatly opens up the risk of footguns. Yeah, it really does. There are so many ways things can go wrong once you start plugging tools into an LLM, especially if those tool…",{"id":61,"text":62},{"commenters":187,"max_depth":188,"maker_replies":176,"first_comment_mins":189,"lifespan_hours":190},68,8,11,90,[192,196,198,201,205,208,211,213,216,218,221,223,225,228,232,234,237,240,242,244,247,250,253,255,257,260,263,266,269,272,274,276,278,280,283,286,288,290,293,295,298,301,302,305,308,310,312,314,316,319,321,322,325,327,329,332,335,338,341,343,346,348,351,356,358,361,363,365,366,368,372,374,377,379,381,384,386,388,391,393,395,398,401,403,406,408,410,413,416,419,421,423,425,428,430,432,437,442,446,448,450,452,454,458,462,466,469,471,472,476,478,480,484,485,487,490,493,495,496,498,500,504,507,509,512,514,517,519,521,523,526,528,531,535,537,541,544],[193,39,37,194,195,39],"44111485","project\u002Fpositive\u002Fnone","kristopolous",[180,39,39,197,10,31],"project\u002Fneutral\u002Fidea",[199,39,39,200,195,39],"44111572","other\u002Fneutral\u002Fidea",[202,39,39,203,204,39],"44111669","commenter\u002Fneutral\u002Fnone","rpeden",[206,39,37,207,195,39],"44111697","project\u002Fpositive\u002Fexecution",[209,39,39,203,210,39],"44112658","icarito",[212,39,39,203,195,39],"44112723",[214,39,35,215,79,39],"44111941","project\u002Fneutral\u002Fnone",[217,39,35,215,195,39],"44111947",[219,39,39,220,79,39],"44112010","other\u002Fneutral\u002Fnone",[222,39,35,215,79,39],"44112022",[224,39,35,197,195,39],"44112082",[226,39,39,220,227,39],"44113215","johnisgood",[229,39,37,230,231,39],"44111976","project\u002Fpositive\u002Fidea","nbbaier",[233,39,37,230,195,39],"44112215",[235,39,39,203,236,39],"44112257","kazinator",[238,39,35,197,239,39],"44112740","CGamesPlay",[241,39,35,197,195,39],"44112949",[243,39,39,220,195,39],"44131241",[245,39,35,215,246,39],"44114294","rglynn",[248,39,37,194,249,39],"44114354","vicek22",[251,39,37,194,252,39],"44115698","rcarmo",[97,31,31,254,98,39],"project\u002Fcritical\u002Fnone",[183,31,39,256,10,31],"maker\u002Fneutral\u002Fnone",[258,31,39,220,259,39],"44111556","kbelder",[261,31,39,220,262,39],"44111627","isaacremuant",[264,31,39,220,265,39],"44112305","zaik",[267,31,39,220,268,39],"44116972","theptip",[270,31,31,254,271,39],"44112091","shepherdjerred",[273,31,39,203,98,39],"44112229",[275,31,39,203,227,39],"44113224",[277,31,39,203,98,39],"44115122",[279,31,39,203,227,39],"44117156",[281,31,39,220,282,39],"44117320","cauefcr",[284,31,39,220,285,39],"44122535","kelseyfrog",[287,31,39,220,227,39],"44144503",[289,31,39,220,227,39],"44144495",[291,31,39,203,292,39],"44113306","yard2010",[294,31,39,220,268,39],"44116985",[296,31,35,215,297,39],"44114536","mike_hearn",[299,31,39,220,300,39],"44114787","arendtio",[101,17,37,194,102,39],[303,17,35,215,304,39],"44111959","andresnds",[306,17,39,220,307,39],"44141255","johntash",[309,35,35,215,210,39],"44112690",[311,35,35,215,195,39],"44112718",[313,35,35,215,210,39],"44112767",[315,35,35,197,195,39],"44113159",[317,35,37,194,318,39],"44116043","howmayiannoyyou",[133,43,37,320,134,39],"maker\u002Fpositive\u002Fnone",[61,43,39,256,10,31],[323,43,35,197,324,39],"44115329","mihau",[326,43,39,256,10,31],"44116626",[328,43,37,320,324,39],"44117083",[330,37,37,194,331,39],"44112327","prettyblocks",[333,37,39,220,334,39],"44112364","sillysaurusx",[336,37,39,220,337,39],"44112611","xk_id",[339,37,39,220,340,39],"44113848","pollinations",[342,37,39,220,334,39],"44115465",[344,37,39,220,345,39],"44115677","anthk",[347,37,39,220,195,39],"44112744",[349,37,39,220,350,39],"44119281","therouwboat",[352,353,35,354,355,39],"44116471",6,"maker\u002Fneutral\u002Fidea","losvedir",[357,353,39,197,10,31],"44116691",[359,32,35,256,360,39],"44121007","consumer451",[362,32,39,256,10,31],"44121362",[364,32,39,220,360,39],"44121434",[85,188,37,207,86,39],[78,367,37,194,79,39],9,[369,370,39,220,371,39],"44111329",10,"ttul",[373,370,39,220,10,31],"44111387",[375,370,39,220,376,39],"44111426","puttycat",[378,370,39,220,10,31],"44111442",[380,370,39,220,376,39],"44111510",[382,370,37,230,383,39],"44116107","yangikan",[385,370,35,197,383,39],"44116408",[387,370,39,215,10,31],"44116649",[389,189,39,220,390,39],"44111128","swyx",[392,189,39,220,10,31],"44111173",[89,394,37,230,90,39],12,[108,396,31,397,109,39],13,"project\u002Fcritical\u002Fexecution",[399,396,39,400,10,31],"44110846","project\u002Fneutral\u002Fexecution",[402,396,35,400,109,39],"44110965",[404,396,35,400,405,39],"44111118","tionis",[407,396,39,203,227,39],"44113284",[409,396,39,203,405,39],"44113349",[411,396,35,400,412,39],"44123502","tinodb",[414,396,35,400,415,39],"44111864","varyherb",[417,396,39,418,10,31],"44112097","maker\u002Fneutral\u002Fdocs",[172,420,35,197,173,39],14,[422,420,39,197,10,31],"44126495",[115,177,35,424,116,39],"project\u002Fmixed\u002Fperformance",[426,177,39,427,10,31],"44111933","project\u002Fneutral\u002Fperformance",[429,177,35,427,116,39],"44112005",[431,177,39,427,10,31],"44112076",[433,434,35,435,436,39],"44112576",16,"project\u002Fneutral\u002Fdocs","rat87",[438,439,37,440,441,39],"44114565",17,"project\u002Fpositive\u002Fdesign","never_inline",[443,444,35,197,445,39],"44113029",18,"lynx97",[447,444,39,400,10,31],"44113093",[449,444,35,418,227,39],"44113243",[451,444,39,418,10,31],"44113416",[453,444,37,207,445,39],"44114308",[455,456,37,320,457,39],"44113927",19,"tiniuclx",[459,460,35,197,461,39],"44114614",20,"aitchnyu",[463,464,37,230,465,39],"44113082",21,"pawanjswal",[467,468,39,220,345,39],"44115653",22,[141,470,35,197,142,39],23,[51,470,39,194,10,31],[473,470,39,474,475,39],"44110917","commenter\u002Fcritical\u002Fnone","th0ma5",[477,470,39,203,10,31],"44110924",[479,470,39,203,475,39],"44112036",[481,470,37,482,483,39],"44110990","project\u002Fpositive\u002Fdocs","setheron",[127,470,39,435,10,31],[486,470,37,482,483,39],"44111226",[488,470,39,220,489,39],"44111143","furyofantares",[491,470,39,220,492,39],"44111565","cyanydeez",[494,470,39,220,489,39],"44112382",[145,29,35,197,146,39],[497,29,39,197,10,31],"44113393",[499,29,37,440,146,39],"44122383",[501,176,31,502,503,39],"44114422","project\u002Fcritical\u002Fidea","chrissoundz",[152,505,31,506,153,39],26,"project\u002Fcritical\u002Fperformance",[508,505,39,418,10,31],"44111422",[510,505,39,200,511,39],"44111545","xrd",[513,505,39,220,10,31],"44111571",[515,505,37,320,516,39],"44111783","131012",[518,505,39,203,475,39],"44111989",[520,505,39,203,10,31],"44112417",[522,505,39,203,475,39],"44113025",[524,505,39,203,525,39],"44114798","tessellated",[527,505,39,203,511,39],"44112358",[529,505,37,530,153,39],"44111668","maker\u002Fpositive\u002Fdocs",[532,533,31,502,534,39],"44114477",27,"WhereIsTheTruth",[536,533,39,203,441,39],"44114595",[538,539,39,220,540,39],"44110932",28,"dr_kretyn",[542,30,31,543,142,39],"44110671","maker\u002Fcritical\u002Fdesign",[545,30,39,546,10,31],"44110895","maker\u002Fneutral\u002Fdesign",[],[549,554,559,564,568,572],{"id":550,"name":551,"points":552,"category":553},"44118023","Desktop Docs",597,"productivity",{"id":555,"name":556,"points":557,"category":558},"44103839","Lazy Tetris",438,"games",{"id":560,"name":561,"points":562,"category":563},"44067409","Defuddle",418,"languages",{"id":565,"name":566,"points":567,"category":19},"44112326","AutoThink",397,{"id":569,"name":570,"points":571,"category":558},"44101175","Porting Terraria and Celeste to WebAssembly",338,{"id":573,"name":574,"points":575,"category":576},"44080803","rotary_dial_kmod",337,"hardware",false,"v2",{"id":580,"name":5,"line":6,"ai":577,"cat":19,"year":12,"points":13,"comments":14,"rec":26,"s":27,"top":17,"kw":581,"maker":10,"domain":5,"tier":18,"attempts":39,"strip":582,"url":9,"mix":583,"praise":73,"objection":94,"sub":20},44110584,[20,23,24,25],"5533534010035355503555333333455355325031",[29,30,31,32],1793991121787]