Introducing AnythingLLM and No-Code Agents
hey everyone Timothy kbat founder of mlex labs and creator of anything llm and also the maintainer of it. AnythingLLM, if you're not familiar, is an all-in-one application that you can run on a server or on your desktop that aims to just do all the stuff you want to do with AI all in a single package without you having to code anything or install a thousand plugins or worry about Cuda or anything like that. We just want AI to work for you.
And you can deploy AnythingLLM at your organization as a multi-user kind of instance. You can also just run it on your laptop, whatever form factor that you have and whatever resources you have available, we will help AI run on it so that you can use it for productivity.
One of the more popular things people use our tool for is of course chatting with documents and AI agents, and that is actually what I want to talk about today. And so if you're not familiar, AnythingLLM is open source and it is on GitHub. And only recently, we actually launched a feature that is called our no-code AI agent Builder. This is absolutely incredible and a huge, huge benefit to anyone who wants to make agents or do things with agents besides just general chats but don't know how to code. And while I know how to code, I recognize that most people don't and we have done agents for a while. AnythingLM has had agents in it in some way, shape, or form for a very long time, and if you wanted to make your own, you still needed to know how to code. And we've had, you know, our whole SDK of how you could write them and how they interact, and the world was really your oyster. For a lot of people that still is out of reach, and at AnythingLLM, our main thing is to help the everyday person. You shouldn't need specialized skills or understanding on how to run agents.
The Problem with Existing AI Agent Frameworks
Currently, running agents anywhere really is a pretty complicated process. You're either limited to running your agents on a cloud, and this could be something like Zapier, this could be a tool like Gumloop. Either way, those run on a cloud and they're kind of out of your control and also not local. If you wanted to do agents locally, basically you have to learn how to code. There really aren't any comprehensive no-code ways to just run an agent on your laptop and have it do something productive.
You may be familiar with projects like Microsoft Autogen. This is a framework. This is something that you can use to build agent skills with some LLMs. Some do better, some do worse. Either way, this solves a lot of the complexity, but it still requires you to know how to code and also you have to deal with all the integrations with Python and all the other stuff. Great framework, still requires development knowledge.
You may even be familiar with tools like CrewAI. CrewAI is really popular, but you'll actually notice that if you want to run this as a service, that doesn't really exist. You need to actually subscribe to their platform to do that. And if you want to use CrewAI, you can absolutely use their Python framework to build more tools for your local models or for your niche use case. And CrewAI is, again, an amazing framework that makes building tools easier, but you still need to know how to code.
And as of more recently, many of you have probably heard about Model Context Protocol. You've probably seen it abbreviated as MCP. This is a library built by Anthropic. Still requires you to know how to code, although it does pave over a lot of the complexities that the other two libraries do expose. So for a little less control, you get easier builds, but you still need to know how to code. There's really no way around it. At AnythingLLM, we just think that that's kind of unacceptable.
And so today, I want to show you the AnythingLLM AI Agent Flow Builder. That's what we call it, and it is exactly what it sounds like.
First Look at the Agent Flow Builder UI
You've probably seen a UI that looks like this in some other cloud-based AI-ey flows that you can define. Let's just go through the current state of things and then I'm going to show you a couple demos and also show you how powerful building just a simple flow can really be.
So if you go to the settings, I'm on AnythingLLM desktop, and if we go to the agent settings page, you'll see our standard agent skills. And I have everything turned off right now just for simplicity. We have chatting with documents, summarizing documents, scraping the web, generating files, saving charts, searching the web with like a web search engine, an SQL connector. And then I even have two custom-coded agent skills in here. Then you'll notice this new section on the bottom that's called Agent flows.
Agent flows, you can just click on Open Builder and you'll get this. Now, you don't need to be a programmer to understand how this works. You have probably interacted or want your AI to interact with a website, an API, or just in general do something with some piece of text. That is what a flow is.
And all flows have a name and a description that basically defines to the LLM what is this tool good for, how do I use it, and how would I expect to use it. That really actually drives if the LLM will use the tool or not. And then, of course, we have variables. And variables here can just be anything. We can name them whatever we want. We can also set a predefined default value if we like, if we need to. And then, of course, we can add and chain as many blocks together as we want.
Each block—and there will be more blocks for desktop clients coming soon because desktop client is just so much more powerful, you're going to see a lot more content here if you're on the desktop version in the near future. And so let's just go through each block that we have available.
Deep Dive: The Three Core Building Blocks
There are three principal blocks, and with these three you can already probably do about 90% of what you'd like. So let's look at the first block, which is just an API request. Now again, you don't need to be a developer to do this. You probably actually already have a service that you want to interact with and their docs tell you exactly how it works, but you just don't want to write the code for it. This actually allows you to do this. This opens up the internet to basically any kind of agent you would like.
And so you can put in your URL, you can define the method, you can set headers, and you can even save the response as a variable that you define up here to do something with in this flow or even other flows. You can chain flows together with the AnythingLLM flow Builder, and I'm going to show you an example of that.
One of the next most important blocks is the LLM instruction block. And from here, you can take an input from any other previous block or maybe even from the very initial state, and then run some kind of instruction on it. Of course, this is your local model running this, and here this data is either going to get pre-processed or post-processed depending on what it is you want to do. And then, of course, you can store that as a variable as well.
And of course, because we really wanted to just make to where any kind of website or web service is accessible, you can actually just use the web scraper that's built into AnythingLLM directly. And this is actually even a little bit more powerful because you can specify a website and then get just the text content, which sometimes works. You can also get all of the HTML, which is very heavy on your context but if you need it, then fine. You can also target specific elements that we will then pick out of the HTML for you depending on their CSS selector. If you do know how to code, this specific content capture will be very powerful to you.
We can chain as many of these blocks together as we want to get our desired output. This is actually very efficient the way we've designed this on the agent's context window, which ultimately if you are running local models, the context window is always your limiting factor. And we've actually done some great work here to make sure that that is preserved and your tools can still be called.
Demo 1: The Hacker News Headline Viewer
So let's start with a dead simple tool. So I have this tool right here that if we go and edit it, we'll see that what this tool is supposed to do, and here's its definition, is it is the Hacker News headline viewer. So it is going to allow me to ask my agent to go and get the top or newest or front page of Hacker News, but also process that input based on a topic of interest. I'm going to show you what that looks like in practice, but you can see all of this is just plain text. I'm just defining, here's an example: 'check out Hacker News's newest and find political posts'. It'll do newest and then my topic is political discussions or items. And then you can do the same for AI. You can do this for any number of combinations. Everything in this description helps the AI actually call your tool properly.
But you can see we've only defined a couple variables here, and what we do is we start out with a web scraping block. I've actually wrote a CSS content selector where we get the span.titleline CSS selector. If you don't know what that is, you don't even really need to know. We could just get the text if we wanted to, but I wanted the links as well, so that's why I'm grabbing the entire HTML element. We then capture all this data, save it to a variable, then in the next block tell our LLM, 'hey, check out this content and extract all the links that would be relevant to blank,' whatever blank might be. And then that's it, that's the end of this tool. That's all this tool does.
And so let's give it a run and actually show you what it looks like. So this is the current front page of Hacker News as it stands today. What we want to do is, for example, let's ask for any posts that have to do with Apple. You can see there are a lot of posts on this page. There's really only one that has to do with Apple. So if we send this request and this tool runs, we should expect our agent to fetch this site, then using our natural language, filter down the results that we want, which should be just one link. So let's run that agent query now. Just going to paste in this request, and it says, 'Can you get the latest Hacker News headlines about Apple?'
You'll see if we expand the agent thought, you'll see that we executed the flow Hacker News Headlines, scraped the content, got 30 elements that matched our CSS selector, then processed that in our LLM and then get our response. And you can see here's the link. It's one single item and it is the Apple software quality crisis, which is the only element on that page that made sense. And if we click it, it does go to the link on Hacker News. So this worked perfectly. And this is way more powerful than just asking the LLM to find a website. This is something that is just very, very concise but also flexible enough for us to build, but without any code at all. And that's awesome.
Demo 2: Posting Messages to Discord
Let's go try another tool that I've prepared. And so for my second tool, it's actually going to be pushing a message to a Discord channel for a private Discord that I have. And you can see this tool is actually even more simple than the previous one. And this, all it does is the description, the content, what we want this tool to do is it sends a simple text message to my Discord General Channel. text_to_send, which is the name of the variable defined here, is the text string that will be shown as the message.
And all we do is an API call. And I can actually show you right here I have a testing Discord server. And all I did, by the way, to have this work, if this is a tool you're immediately interested in, is if you go to server settings and then go to Integrations and then go to web hooks, you can click new web hook and then it'll give you a URL. You just click copy, and that's all I pasted in. All I did was I got, pasted the link I got from Discord into here. I know the method is a post request, I know this because I looked at Discord's very easy-to-understand documentation. I know that I'm sending a JSON request, and this is what a valid JSON body looks like. This is just an image link that just shows a cute little robot, that's all it is. And I set the username to 'test hook', but let's set it to 'AnythingLLM Flow Agent' just so we can show that there's really something happening here. And you can see that the text to send variable right here is inserted with this kind of dollar sign curly brace notation. That's how you insert a variable in the agent flow builder. So now that we've made our changes and we have our JSON body and this is valid JSON and ready to go, we just click save. Agent flow is saved.
So now let's just ask the LLM to send a very simple Discord message to us. And so for this tool, I'm just going to say, 'Hey agent, send me a message to Discord that's a polite hello and greeting in multiple languages.' And you can see that we do show some debugging output here and you can see that all of this gets passed in. It's just so that you have observability into these tools. And it says I sent the following greeting message to Discord, and it says hello or a greeting in many different languages. But let's go check if that showed up on Discord. And you can see that the AnythingLLM Flow Agent, which is what we called the bot or the web hook, and it has our cute little robot photo, shows all of this invalid markdown that Discord can render.
Demo 3: Chaining Skills and Flows for Complex Tasks
And so maybe you're not impressed by those two tools, but there is something that is even more impressive here, and that is that agent flows don't just run by themselves. They can in fact be chained together, not only with other agent flows resulting in many different complex flows executing, but you can also use them with the built-in skills that we already have, like scraping a website. Here is a much more powerful example that actually has real life applications, and I've used it, but don't tell anyone.
So in the AnythingLLM Discord, there is an updates channel that I'm able to post to where I regularly post updates about the changelog or things like that, and just, you know, to elevate the new things that we've built. And actually, in the last update, which has been live for more than a month now, is when we debuted the flow builder. I'm just getting around to making the video now. This tool is actually how I've crafted some of these update responses, which is really awesome. So let me show you how I do that.
So I want to just ask the agent, 'Hey, can you go to the 1.7.4 release of AnythingLLM desktop, read this page, and then turn that into an exciting Discord announcement change log, and obviously push that to Discord.' And what that will show is a native skill that we offer to everyone with a custom flow paired together, totally seamlessly. Both work totally in isolation to each other, but when you chain them together, you get even more powerful actions.
And so the message I'm going to send is, 'Hey agent, can you check out the docs page I just showed you and push a change log Discord announcement for me? The announcement should be in markdown and use the pound sign to state AnythingLLM version XYZ with the changes.' And let's just add a little flare to it: 'Make it sound super exciting to everyone.' All right, so let's run that. And so you'll see we hit the website where it says scraping the content of our change log. And then you can see that it processed that data from the scraping result and then obviously went crazy with the emojis. And now it is pushing that message to Discord, and it should have been pushed successfully. And we can actually check out Discord. This is the change log announcement. So this is what we should hope to see in Discord. So we went crazy with the emojis, which Discord loves emojis. So let's check out if it got pushed to Discord and what that looks like there. And you can see in our Discord, the message looks exactly the same as what we were shown in AnythingLLM. And all I did was just ask it to do it.
And normally building a tool like this would require multiple steps. Getting it to speak to Discord through a webhook would require custom code. It would not be simple. Even for somebody that is very, very, very lightly familiar with Python, if you don't know how to code, this tool is a 10x opportunity for you.
Conclusion and Future of Agentic AI
You are now able to finally build those tools with just very, very high-level understanding of how things work. And as I mentioned, you can expect to see many, many more blocks here in the near future for both our desktop and Docker offering. They will vary from instance to instance, mostly because on desktop we are able to do things that we can't do on the docker version. That being said, even with the base blocks that exist as of today, this is still an immensely powerful tool and I really hope you use it a lot. We're honestly very interested in the feedback here and I would really, really love to hear it.
We're really just trying to enable more everyday people to build very powerful agent tools because the agentic world and what everybody's been talking about with LLMs and agents really is the future of the use. Chatting with documents is nice, but having an LLM do something for you or have you be able to be in the loop as it does something for you, that's really the future. I hope you enjoy this. Please let me know what you think and thank you as always.