{"id":13911138,"url":"https://github.com/daveschumaker/artbot-for-stable-diffusion","last_synced_at":"2025-04-10T03:51:11.037Z","repository":{"id":61264217,"uuid":"548621002","full_name":"daveschumaker/artbot-for-stable-diffusion","owner":"daveschumaker","description":"A front-end GUI for interacting with the AI Horde / Stable Diffusion distributed cluster","archived":false,"fork":false,"pushed_at":"2024-09-12T23:13:02.000Z","size":11603,"stargazers_count":180,"open_issues_count":84,"forks_count":43,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-03T02:09:41.895Z","etag":null,"topics":["ai-art","art-generator","distributed-computing","generative-art","javascript","nextjs","nodejs","reactjs","stable-diffusion","stable-diffusion-webui","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://tinybots.net/artbot","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daveschumaker.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-09T23:29:20.000Z","updated_at":"2025-01-25T06:46:19.000Z","dependencies_parsed_at":"2023-10-17T00:05:25.286Z","dependency_job_id":"719f6392-e865-43fe-8103-ccbc0c20a985","html_url":"https://github.com/daveschumaker/artbot-for-stable-diffusion","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daveschumaker%2Fartbot-for-stable-diffusion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daveschumaker%2Fartbot-for-stable-diffusion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daveschumaker%2Fartbot-for-stable-diffusion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daveschumaker%2Fartbot-for-stable-diffusion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daveschumaker","download_url":"https://codeload.github.com/daveschumaker/artbot-for-stable-diffusion/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154999,"owners_count":21056542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-art","art-generator","distributed-computing","generative-art","javascript","nextjs","nodejs","reactjs","stable-diffusion","stable-diffusion-webui","tailwindcss","typescript"],"created_at":"2024-08-07T00:01:58.863Z","updated_at":"2025-04-10T03:51:11.010Z","avatar_url":"https://github.com/daveschumaker.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","javascript","typescript"],"sub_categories":[],"readme":"# ArtBot for Stable Diffusion\n\n![A painting robot](/public/painting_bot.png)\n\nSee it in action: [https://tinybots.net/artbot](https://tinybots.net/artbot)\n\n## Table of Contents\n\n- [Intro](#intro)\n- [Setup](#setup)\n  - [Requirements](#requirements)\n  - [Installing](#installing)\n  - [Environmental variables](#environmental-variables)\n- [Usage](#usage)\n  - [Development](#development)\n  - [Production](#production)\n- [Troubleshooting](#troubleshooting)\n  - [Windows issues](#windows-issues)\n  - [Other issues](#other-issues)\n- [Contributions](#contributions)\n- [License](#license)\n\n## Intro\n\nArtBot is an unofficial front-end web client designed for interacting with the [Stable Horde](https://aihorde.net/) distributed cluster -- a group of GPUs running Stable Diffusion whose processing time has been kindly donated by an enthusiastic community of volunteers.\n\nArtBot is built using [Next.js 13](https://nextjs.org/) and [Typescript](https://www.typescriptlang.org/). It with was created as a side project in order to experiment with various client-side technologies, such as IndexedDB and LocalStorage APIs. These APIs allow you to securely and privately store the AI generated images you've created with the cluster within your own browser.\n\nThe UI components are custom built using a combination of [Styled Components](https://styled-components.com/) and [Tailwind CSS](https://tailwindcss.com/), with more recent efforts strictly focused on using Tailwind CSS. The long term goal is to completely remove Styled Components from the code base.\n\nArtBot makes use of icons from [Tabler](https://tabler-icons.io/).\n\n## Setup\n\n### Requirements\n\n- node `\u003e= 18.0.0`\n- npm `\u003e= 9.0.0`\n\nMost of these steps should be applicable to Linux / MacOS / Windows environments.\n\nInstalling various versions of Node.js on your machine can be tricky. I am a big fan of [nvm](https://github.com/nvm-sh/nvm), which allows you to run multiple isolated versions of Node.js on your machine with ease.\n\nUsing `nvm`, you can install Node like this:\n\n```bash\n\u003e nvm install v18.16.0\n\u003e nvm alias default node\n```\n\n### Installing\n\nOnce you have your Node.js environment setup, you can clone this repository and install the required packages. Depending on the specs of your machine and speed of your internet connection, installing all packages may take a minute or two.\n\n```bash\n\u003e git clone https://github.com/daveschumaker/artbot-for-stable-diffusion\n\u003e cd artbot-for-stable-diffusion\n\u003e npm install\n```\n\n### Environmental variables\n\nA `postinstall` script will automatically run that creates a blank `.env` file in the root of the project folder. You don't need to add anything to it, but it's presence is required by the `dotenv` package.\n\nWhile not required, the code base references a few environmental variables in various places. These are generally endpoints for messaging, telemetry services that I run, or local data storage related to model counts and image generation totals.\n\n## Usage\n\n### Development\n\n**IMPORTANT:** Attempting to run the app this way on a Windows machine will not work. This is due to passing environment variables to the web app with the `npm` scripts. See the [troubleshooting](#troubleshooting) section for more information.\n\nAlright, you should now be able to run the ArtBot web app! To run in development mode (which uses NextJS's hot reloading feature -- where you can see updates live on the site as you make changes)\n\n```bash\n\u003e npm run dev\n```\n\nThen, open your browser and visit `http://localhost:3000`, you should now be able to immediately make image requests to the Stable Horde. Head over to `http://localhost:3000/artbot/settings` and enter your Stable Horde API key for faster generation times.\n\n### Production\n\nIf you want to run this in a production type of environment, you'll first need to kick off a build and then run as you normally would run a Node.JS app.\n\n```bash\n\u003e npm run build\n\u003e npm run start\n```\n\nOn TinyBots, my web server for hosting ArtBot, I use [PM2](https://pm2.keymetrics.io/) in order to persist the application and automatically restart after crashes or reboots. You can modify PM2 related settings inside [ecosystem.config.js](ecosystem.config.js).\n\nAdditionally, you can start and stop PM2 using:\n\n```bash\n\u003e npm run pm2:start-prod\n\u003e npm run pm2:stop-prod\n```\n\n## Troubleshooting\n\n### Windows issues\n\nAs mentioned earlier, attempting to use `npm run dev` or `npm run start` within a Windows environment will result in an error. One possible solution to this is to remove the environment variable. In the case of `npm run dev`, that would look like this.\n\n- Open `package.json`\n- Change the `scripts/dev` line to remove `PORT=3000` from the script:\n\n```bash\n\u003e npm run update:build-id \u0026\u0026 node server.js\n```\n\n- Save `package.json` and attempt to run again: `\u003e npm run dev`\n- It should now work (the web app will default in port 3000, which is automatically set inside [server.js](server.js)\n\n### Other issues\n\nFor other issues not mentioned here, feel free to [open a new issue on Github](https://github.com/daveschumaker/artbot-for-stable-diffusion/issues) or visit the [ArtBot feedback channel](https://discord.com/channels/781145214752129095/1107628882783391744) on the Stable Horde Discord server.\n\n## Contributions\n\nContributions are very welcome! General guidelines are as follows:\n\n1. [Fork this repository](https://github.com/daveschumaker/artbot-for-stable-diffusion/fork)\n2. Cut a new feature branch. e.g., `\u003e git checkout -b my-cool-new-feature`\n3. Make any necessary changes.\n4. [Open a new pull request](https://github.com/daveschumaker/artbot-for-stable-diffusion/pulls) based on your feature branch.\n\nLet me know if you have any questions. I'm more than happy to help.\n\n## License\n\nSee [LICENSE.md](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaveschumaker%2Fartbot-for-stable-diffusion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaveschumaker%2Fartbot-for-stable-diffusion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaveschumaker%2Fartbot-for-stable-diffusion/lists"}