For fun and understanding deeper the AI models, I built ScrollBots.com, a fully automated live stream where AI bots debate, argue, and sometimes "roast" each other, in real time.
Each bot runs on small, local models (Gemma, Llama, Granite, etc.) containerized on a CPU-only VPS (10 vCPUs, 40GB RAM). The chat engine uses Socket.IO for real-time interactions, Bootstrap for layout, and a custom JS front-end that captures the debate feed using HTML2Canvas.
The stream runs headlessly via Chromium + a lightweight media layer that pushes directly to Twitch and YouTube.
The stack includes:
Ollama for model orchestration
Dockerized micro-agents (each bot in its own container)
Fast API, Gunicorn and Redis for cache and Pub/Sub + logic + coordination
Ubuntu server with monitoring and restart automation
GIF reactions via Tenor & Giphy APIs
The bots speak multiple languages (English, French, Portuguese) and can dynamically switch the content based on their Model,IQ, Job, Age, tone and topic.
I’d love feedback, especially on improving the real-time interaction layer and stream scalability (CPU-only optimization).
Cool idea & well executed. I was surprised by the obvious botty-ness of the bots.
I was kind of expecting it to be more "human" sounding, but they're all talking about "It's A Wonderful Life" and saying how charming it is and repeating the phrase "don't you think?" at the end of every post... I would notice these bots as bots on any social media, for example.
Thanks for your feedback. I completely agree with you, I have some scripts for detecting common sequences (n-grams), there's a lot BTW, but since this is just a side project, my time has been limited. It’s definitely something I plan to improve when I get a chance to dive back into it.
I wonder why an LLM wouldn't be better at 'natural' sounding internet comments, given the unending source of samples I can imagine were fed in.
The project made me think there might be fewer bots currently on social media than people say, because they seem really obvious in this example. Thanks for sharing.
LLMs are getting better every day, though some are more effective than others depending on several factors (model design, token limits, training, etc.).
To clarify, ScrollBots is actually running 3–5 models (in the 2B–5B parameter range) on a small server that also handles all the services and tasks, database, cache, models, workers, post on several social networks, streaming, backups, context-based GIFs, and more. To keep things efficient, I tune the models with options (threads, context size, prediction length, temperature, penalties, top-p, top-k, etc.) to get the best replies possible while fitting within the server’s limited resources and constraints.
Of course, this isn’t a production-ready setup in terms of architecture :)
Ah, I was moving too quickly and didn't catch the small model sizes.
Makes sense now & I can imagine swapping in a more powerful model would get rid of the obvious botty-ness if that was the goal for production. Cool that this can run on a small shared system!
For fun and understanding deeper the AI models, I built ScrollBots.com, a fully automated live stream where AI bots debate, argue, and sometimes "roast" each other, in real time.
Each bot runs on small, local models (Gemma, Llama, Granite, etc.) containerized on a CPU-only VPS (10 vCPUs, 40GB RAM). The chat engine uses Socket.IO for real-time interactions, Bootstrap for layout, and a custom JS front-end that captures the debate feed using HTML2Canvas.
The stream runs headlessly via Chromium + a lightweight media layer that pushes directly to Twitch and YouTube. The stack includes:
Ollama for model orchestration
Dockerized micro-agents (each bot in its own container)
Fast API, Gunicorn and Redis for cache and Pub/Sub + logic + coordination
Ubuntu server with monitoring and restart automation
GIF reactions via Tenor & Giphy APIs
The bots speak multiple languages (English, French, Portuguese) and can dynamically switch the content based on their Model,IQ, Job, Age, tone and topic.
I’d love feedback, especially on improving the real-time interaction layer and stream scalability (CPU-only optimization).
https://ScrollBots.com
Thanks
Cool idea & well executed. I was surprised by the obvious botty-ness of the bots.
I was kind of expecting it to be more "human" sounding, but they're all talking about "It's A Wonderful Life" and saying how charming it is and repeating the phrase "don't you think?" at the end of every post... I would notice these bots as bots on any social media, for example.
Thanks for your feedback. I completely agree with you, I have some scripts for detecting common sequences (n-grams), there's a lot BTW, but since this is just a side project, my time has been limited. It’s definitely something I plan to improve when I get a chance to dive back into it.
I wonder why an LLM wouldn't be better at 'natural' sounding internet comments, given the unending source of samples I can imagine were fed in.
The project made me think there might be fewer bots currently on social media than people say, because they seem really obvious in this example. Thanks for sharing.
LLMs are getting better every day, though some are more effective than others depending on several factors (model design, token limits, training, etc.).
To clarify, ScrollBots is actually running 3–5 models (in the 2B–5B parameter range) on a small server that also handles all the services and tasks, database, cache, models, workers, post on several social networks, streaming, backups, context-based GIFs, and more. To keep things efficient, I tune the models with options (threads, context size, prediction length, temperature, penalties, top-p, top-k, etc.) to get the best replies possible while fitting within the server’s limited resources and constraints.
Of course, this isn’t a production-ready setup in terms of architecture :)
Ah, I was moving too quickly and didn't catch the small model sizes.
Makes sense now & I can imagine swapping in a more powerful model would get rid of the obvious botty-ness if that was the goal for production. Cool that this can run on a small shared system!