LLM-powered neofetch-style ASCII system info panels. Every commit to main triggers a
GitHub Actions workflow that randomly picks a small local LLM (via Ollama), has it
self-reflect on its own "mood" and "state," then deterministically renders that
self-description as a neofetch-style ASCII panel embedded in this README.
.--. Distro Persona: I'm a small language model running on a Linux server.
|o_o | Mood: Freshly booted up, just learning how to make sense of this new world.
|:_/ | Uptime Joke: Why is my uptime so long? Because it's been raining today!
// \ \ Shell Of Choice: zsh is my favourite shell for its simplicity and power.
(| | ) Resolution: Just as good as the average user when it comes to handling tasks.
/'\_ _/`\ Cpu Joke: My CPU used to be a 2.4GHz quad-core system, but lately it's been upgraded to a 1.8GHz single-core processor.
\___)=(___/ Memory Joke: Why do I need so much RAM? Because I'm always trying to solve problems on the go!
One Liner: Just as the old saying goes: "The best way to predict the future is to create it."
Model: qwen2.5:0.5b | Commit: 1166b05b
-
Model Selection: A commit hash is SHA-256 hashed and used to deterministically pick one model from a curated list of small, CPU-friendly Ollama models (~0.5B-2B parameters).
-
Self-Reflection: The chosen model receives a system prompt asking it to imagine itself as a Linux distro that just booted up, then describe its "system info" in a strict
key: valueformat with 8 required fields. -
Parsing & Fallback: The model output is parsed into structured fields. Any missing field is filled with a deterministic fallback derived from the commit hash — the pipeline never crashes or produces incomplete output.
-
Rendering: The fields are rendered into a classic neofetch two-column layout (ASCII logo on the left, stat lines on the right) inside a fenced code block.
-
README Update: The rendered block replaces the content between
<!-- LLMFETCH:START -->and<!-- LLMFETCH:END -->markers in README.md.
- Python 3.10+
- Ollama running locally
git clone https://github.com/sharyaropensource/llmfetch.git
cd llmfetch
python -m venv .venv
source .venv/bin/activate
pip install -e .ollama pull qwen2.5:0.5b# Run with a specific commit hash
python -m llmfetch.pipeline abc123def456
# Run with the default dummy hash
python -m llmfetch.pipelineThese models are small enough to run on a stock ubuntu-latest GitHub Actions runner
(2 vCPU / 7GB RAM):
| Model | Parameters | Tag |
|---|---|---|
| Qwen 2.5 0.5B | 0.5B | qwen2.5:0.5b |
| Qwen 2.5 1.5B | 1.5B | qwen2.5:1.5b |
| Gemma 2 | 2B | gemma2:2b |
| Phi-3 Mini | 3.8B | phi3:mini |
| TinyLlama | 1.1B | tinyllama |
- More curated model variants (code-focused, multilingual)
- More ASCII logo variants (cityscape, robot, tree)
- Configurable mood vocabulary and prompt themes
- Option to regenerate on demand via
workflow_dispatchinputs - Stats dashboard tracking which models were picked over time
See CONTRIBUTING.md for setup, coding style, and PR guidelines.