As a requestor, you send a prompt to the AI Horde, which queues it based on your Kudos. Workers pick up jobs, generate results, and return them to the horde. You can check the status or retrieve results anytime. See the our more detailed documentation for further details.
Yes! The AI Horde is a community project, and we welcome contributions. You can open an issue or a pull request to any of our repositories, or join us in our Discord server to discuss your ideas.
We have a collection of markdown documents that provide additional context and information about the AI Horde, its architecture, and how it works.
Also, check out our GitHub organization for the source code behind the major components of the Horde.
This is another broad topic. There is actually a devlog about it. See also the detailed kudos documentation.
The Kudos cost reflects the amount of processing required to generate the image.
Since each payload on the horde can have many variables affecting its speed, we have trained a neural network that takes a request payload as input and calculates the required Kudos, based on how much faster or slower it would generate compared to a baseline of 10 Kudos for a 50-step 512x512 image. The baseline costs 10 Kudos. If a payload is expected to take twice as long, it will cost 20 Kudos.
The AI Horde API provides a dry_run
payload key. When set to true, it returns the Kudos cost for an image without actually generating it.
Additionally, there is a "horde tax" representing extra infrastructure costs for each request. These Kudos are not received by the worker but are "burned" permanently.
Kudos are used to encourage positive behavior in the community. There are ways to earn Kudos besides generating images for others (although that's the best way):
No! Kudos have no inherent value, and we do not allow anyone to exchange Kudos for money. Attempting to bypass this rule is an existential threat to the AI Horde. Please do not attempt to do this secretly. If you exchange money for Kudos and we discover it, we may zero out your account and the account of the person you bought from!
No! Kudos are completely centralized and do not involve any blockchain technology. The AI Horde is explicitly opposed to blockchain technologies and will never integrate with them. Likewise, there is no way to convert Kudos to anything other than favors that benefit the improvement of the AI Horde.
A worker is a computer, usually with a mid-range or higher GPU, that has installed specific software to generate images via Stable Diffusion or KoboldAI locally. It connects to the horde through what we call the "bridge." The worker constantly polls the horde for new jobs and receives Kudos in return for completing them.
Generating images for others 24/7 does consume electricity, which we acknowledge.
People contribute to the horde for many reasons:
Technically, yes. While the worker software and bridge code are not designed to allow this, the software runs on someone else's computer and is open source. Anyone with the know-how can modify their code to view all prompts passing through or save the results they generate.
However, workers do not have any identifying information about individual requestors—they cannot see your ID or IP address.
As a best practice, always request generations as if you were posting in a public forum, like using a Discord bot. While the horde is technically more private, this is still a good habit.
Yes! Workers are not required to stay online at all times. We only ask that you put your worker into maintenance mode before shutting it down to avoid interrupting any jobs it may be processing.
This project began as a way to consolidate resources for the KoboldAI Client. We needed a name, so I chose something thematic for "Kobolds": "A Horde of Kobolds." When image generation was added, I kept the "AI Horde" part.
We have a collection of documents that explain and cross-reference terms commonly used when discussing the AI Horde.
No, the AI Horde itself does not store such details. Prompts and generations are only stored in memory temporarily and are deleted shortly after the generation is delivered or canceled.
Not everyone has a powerful GPU in their PC. The AI Horde allows anyone to use fast Stable Diffusion and KoboldAI, not just those who can afford expensive graphics cards.
Additionally, local clients can be difficult to set up and are often error-prone due to Python dependencies. They also require significant bandwidth to download large models. The horde provides no-install clients, as well as browser clients you can use even on your phone!
If you want to provide a service built on image or text generation, you can use your own PC to power your generations, avoiding the complexity and costs of setting up server infrastructure.
Because the AI Horde is free! You will never need to pay to use the horde. If demand is high, your delivery speed may be slower, but that's also true for other services like Midjourney.
Second, the Horde gives you all the benefits of a local installation, such as prompt freedom, while still allowing a browser interface and flexibility.
Finally, unlike many of these services, the Horde provides a fully-fledged REST API you can use to integrate your applications without worrying about costs.
Because when the service is free, you're the product!
Other services running on centralized servers have costs—someone has to pay for electricity and infrastructure. The AI Horde is transparent about how these costs are crowdsourced, and there is no need for us to change our model in the future. Other free services are often vague about how they use your data or explicitly state that your data is the product. Such services may eventually monetize through ads or data brokering.
If you're comfortable with that, feel free to use them.
Finally, many of these services do not provide free REST APIs. If you need to integrate with them, you must use a browser interface to see the ads.
Of course! This software is FOSS, and you are welcome to use, modify, and share it, as long as you respect the AGPL3 license.
Yes, with some restrictions. Due to the voluntary nature of the AI Horde, you must give back to the AI Horde at least as much as you take out to make a profit. Please see the detailed explanation in this devlog.
Horde-wide, we censor only one type of generation: CSAM images. We use two mechanisms: a regex replacement filter during the initial API request and an anti-CSAM AI running on each worker. See the detailed answers below.
Other than this, the horde does not censor text generations or images that do not appear to be CSAM.
However, individual workers may have their own censorship guidelines, and each requestor can voluntarily opt in to accidental NSFW censorship.
Those generations have been NSFW-censored by the worker that generated them. If you specified your request as SFW, individual SFW workers who fulfill it may have the NSFW censorship model active, which will return this black image. To avoid such images, enable NSFW or ensure your prompt is not too close to the SFW/NSFW boundary. If the image is censored due to the anti-CSAM filter, this cannot be disabled.
Each worker can optionally define a censor list. If any word from that list is found, the worker will automatically post-process using an NSFW censorship model. These words are things that should never be combined with NSFW content or could cause legal issues for the worker.
This means your censored images triggered a worker's censor list. You can rerun the prompt and hope for a different worker or tweak your prompt.
If you believe a worker is using the censor list maliciously or improperly, please contact us with your prompt and the worker's name, and we'll address it.
When an image request first enters the AI Horde, it is passed through a private regex filter looking for a combination of two contexts: "Underage" and "Lewd." For example, "child" is an underage context, and "without clothes" is a lewd context.
If neither or only one of these contexts is detected in a prompt, the prompt is allowed through. For example, "child in the playground" is fine, as is "without clothes in the bathroom."
If both terms are present, the regex protection is triggered. This has two modes:
If replacement_filter
is true
in your API payload and the prompt is under 1000 characters, each triggering term is automatically replaced with an "adult" version. For example, "school" becomes "university." This aims to guide the inference toward safe content.
If replacement_filter
is false
or your prompt exceeds 1000 characters, the request is automatically blocked, and your IP receives a timeout for a few minutes. This timeout increases with repeated offenses to prevent attempts to reverse-engineer the filter.
We have written a detailed devlog about this.