
ShunyaNet Sentinel is a lightweight program that monitors RSS feeds, sends them to an LLM for analysis, and delivers summaries or alerts directly to the GUI and Slack.
ShunyaNet Sentinel is a lightweight, cyberpunk-themed program that ingests RSS feeds (e.g., breaking news, social media), sends them to an LLM for analysis, and delivers alerts and summary reports directly to the GUI and Slack at regular intervals.
The project is built to utilize an LLM hosted locally on the same machine or network (e.g., with Tailscale) using LMStudio or Ollama (02/23 Update). It will also work with an OpenAI API key (02/23 Update).
For alerting, the program utilizes Slack Webhooks, enabling push notifications to be sent to a mobile device.
The ShunyaNet Sentinel is compatible with the latest versions of Linux, MacOS, and Windows*
The quality of reporting and analysis is influenced by the prompt, context size, RSS feeds and LLM chosen. It's recommended you turn off thinking features. Models that seem to have performed well and generally follow instructions, include:
*Strongly suggest macOS or Linux. See Known Issues below.
See Tips, Tricks, and Known Issues at the end for important info!
/v1/chat/completions endpoint, designed for LMStudiorequirements.txt:
LLM hosted via:
git clone https://github.com/EverythingsComputer/ShunyaNet-Sentinel.git
cd ShunyaNet-Sentinel
macOS / Linux:
python3 -m venv venv
source venv/bin/activate
Windows (PowerShell):
python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt
macOS / Linux:
python3 ShunyaNet_Sentinel.py
Windows:
python ShunyaNet_Sentinel.py
default_prompt.txtDefault_test RSS listEnter topics of interest, or load one of the default lists provided. Up to 10 topics may be added to each list.
Click “Load Prompt File” to load a prompt file. A default prompt is provided (default_prompt.txt).
Click “Load Data Source File” to load an RSS list. Two default lists are provided. A short “Default_test” list and a longer “Default_long” list, which focuses on world-wide news and breaking news.
In "Additional Settings", set the following fields. These will save and persist if you end and restart the program. The default settings will work with most configurations - but you must still enter field #1 yourself:
LLM_PROVIDER = lmstudioLLM_BASE_URL = <your LMStudio server URL, e.g.: http://localhost:1234/v1>LLM_MODEL = <OPTIONAL. I recommend leaving this blank and loading your model in LMStudio directly. If you must, then the format is like: lmstudio-community/mistral-7b-instruct>LLM_API_KEY = <Leave this blank, unless you use an authentical key>LLM_PROVIDER = ollamaLLM_BASE_URL = <Your LMStudio server URL, e.g.: http://localhost:11434/v1>LLM_MODEL = llama3LLM_API_KEY = = <leave this empty/blank>LLM_PROVIDER = openaiLLM_BASE_URL = (doesn't matter: this field is ignored)LLM_MODEL = gpt-4o-miniLLM_API_KEY = sk-xxxxNOTE: I recommend you keep it simple for the first run. Use the default settings & make sure it works. Then, tweak context & RSS feeds. Then, adjust the prompt. I’d be curious to see folks’ improved prompts….
Issues/Warnings:
Suggestions:
Alpha
This project is licensed under the Apache 2.0.
Attribution: ShunyaNet / EverythingsComputer
No Warranty: The software is provided "as is", without warranty of any kind, express or implied.
This project uses the following third-party libraries. Please review their licenses when using, distributiong, and/or altering this project:
My cat.
| Setting | Description | Default | Example / Notes |
|---|
| LLM_PROVIDER | SEE NEXT STEP | — | — |
| LLM_BASE_URL | SEE NEXT STEP | — | — |
| LLM_MODEL | SEE NEXT STEP | — | — |
| LLM_API_KEY | SEE NEXT STEP | — | — |
| SLACK_WEBHOOK_URL | Optional Slack webhook URL for sending alerts to Slack. | Optional | https://hooks.slack.com/services/... |
| MAX_INPUT_TOKENS | Maximum tokens sent to the LLM per RSS pull. Rule of thumb: 1 token ≈ 4 characters. If exceeding model context size, enable chunked mode. | 4000 | Increase carefully depending on your LLM's context window. |
| MAX_OUTPUT_TOKENS | Maximum tokens the LLM will send back in its reply. (note: this is the max/cap, not the target!) | 4000 | Recommend you do not change. 4000 is probaly too much breathing room, to be honest |
| MAX_INPUT_TOKENS_BULK | Maximum tokens length of RSS feeds sent to the LLM for bulk processing reports. When bulk processing is enabled, RSS feeds are saved and sent together with a special trend-analysis prompt (hard-coded prompt, for now). Chunks are never used for this, so dont exceed your context limit | 4000 | Likely needs to be increased for meaningful bulk reports. May stress VRAM and context limits. Recommended you disable bulk mode initially. |
| MAX_OUTPUT_TOKENS_BULK | Maximum tokens length of the bulk processing report itself. | 4000 | May need to be increased for meaningful bulk reports. May stress VRAM and context limits. Recommended to disable bulk mode initially. |
| FETCH_INTERVAL | Time in seconds between RSS pulls and LLM analysis. | 600 (seconds, i.e. 10 min) | Do not set lower than total processing time or backlog may occur. |
| ITEMS_PER_FEED | Maximum number of RSS entries pulled per feed per cycle. Previously pulled items are ignored. | 50 | Higher values create a larger first pull. Most RSS feeds do not produce much more than 20 new items every 10 minutes, some much less. |
| USE_CHUNKED_MODE | Enables automatic splitting of RSS content if it exceeds token allowance. 1 = On, 0 = Off. | 1 | Prevents context overflow but may duplicate event reporting across chunks. |
| CHUNK_SIZE | Size of each chunk in characters (not tokens). | 8000 | Approximate conversion: 4 characters ≈ 1 token. I REPEAT: THIS IS IN CHARACTERS. Should it be in tokens? Probably! But it's not. |
| WRITE_TO_FILE | Optional. Writes all pulled RSS content to a rolling file for external benchmarking, prompt testing, or model comparison. Does not affect core Sentinel functionality. 1 = On, 0 = Off. | 0 | Useful for offline LLM testing and evaluation. |
| ANALYSIS_WINDOW | Time interval used for each bulk processing report. | 3600 (seconds, i.e. 1h) | Used only when Bulk Processing is enabled. |
| BULK_ANALYSIS | Enables periodic bulk RSS trend reports. 1 = On, 0 = Off. Very experimental relative to the routine reporting. The special prompt is hard-coded, for now. | 0 | Sends accumulated RSS feeds to the LLM for a single trend analysis report. May increase processing load significantly. |