SKOPOS — fleet observability satellite of the AICOM ecosystem
WARDEN quality cycle: MOMUS → AI-Factory → SKOPOS → shared node agent → deployment.
Self-hosted nginx & Apache analytics and AI security for your server fleet — GA-like HTTP dashboards, Security Center with 3D threat map, Prometheus Observability (APM KPIs + 3D service graph), scan history, and an AI agent with voice input. No third-party trackers; data stays on your infrastructure.
Live demo · Landing · nine built-in themes
In Greek, skopos (σκοπός) means watcher or scout. SKOPOS is the fleet observability satellite of the AICOM / AIMarket ecosystem: nginx traffic over SSH, security posture across factory / metis / oracle hosts, and an LLM analyst in the sidebar.
| Role | SSH log collection → SQLite/PostgreSQL analytics → Security Center + AI agent |
| Live demo | skopos.modelmarket.dev |
| Landing (GitHub Pages) | alexar76.github.io/skopos |
| Monitors | nginx access logs (primary), Apache combined, CPU/RAM/disk, ports, fail2ban, port knocks |
| Charter | Read-only SSH probes · self-hosted data · optional dashboard password |
Features
- Analytics — nginx access logs over SSH, SQLite, Streamlit charts, traffic globe
- Security — CPU/RAM/disk/network, port audit, firewall, cyberpunk 3D threat map, consolidated Security Report
- Scan History — score timeline, findings trends, snapshot comparison
- Auto-scan — configurable background security scans (default every 60 min)
- AI Agent — OpenRouter (default), DeepSeek, OpenAI, Anthropic, Ollama, LM Studio; sidebar chat with voice input
- i18n — English (default), Russian, Spanish (
locales/)
Quick start
See docs/quickstart.md.
cp servers.example.yaml servers.yaml
cp agent.example.yaml agent.yaml
export OPENROUTER_API_KEY=sk-or-...
python skoposctl.py collect
python skoposctl.py security-scan
streamlit run dashboard.py
| Page | URL |
|---|---|
| Analytics | http://localhost:8501 |
| Security | sidebar → Security |
| Scan History | sidebar → Scan History |
| Settings | sidebar → Settings |
Security
- Security Score (0–100, grade A–F) in sidebar on every page
- Threat alerts banner when critical/high issues exist
- Dashboard password — set/change/regenerate in the admin panel; only a
salted PBKDF2 hash is stored in the DB (env
SKOPOS_DASHBOARD_PASSWORDstill supported for bootstrap). A post-deploy modal prompts you to set one, and passwords expire after 90 days with a Telegram reminder. See configuration → Dashboard password & rotation - SKOPOS_SSH_STRICT_HOST_KEYS=1 — verify SSH host keys (recommended)
- See docs/audit-findings.md
Documentation
| Doc | Description |
|---|---|
| In-app Documentation | Guides with screenshots (also in sidebar / top bar) |
| Quick Start | 5-minute setup |
| User Guide | Full UI reference |
| Use Cases | Common workflows |
| Security Module | Architecture & extension |
| Privacy & data handling | IP anonymisation, retention & GDPR / US-state-law mapping |
| nginx scope | Analytics are nginx-only — disclaimer & log format |
| CHANGELOG | Release notes |
Analytics scope: traffic dashboards parse nginx access logs by default. Apache combined logs are supported when
apache.enabled: true. Security probes are stack-agnostic.
Configure servers
Edit servers.yaml — SSH host, nginx log paths. See servers.example.yaml.
For per-domain analytics, include $host in nginx log_format.
AI agent
Default provider: OpenRouter via OPENROUTER_API_KEY. Edit agent.yaml for DeepSeek, OpenAI, Anthropic, Ollama, or LM Studio.
For a full prioritized remediation report, open Security → Security Report. The sidebar agent supports follow-up chat (including voice) on every page.
Docker
docker compose up -d --build
Open http://localhost:8501
License
MIT — see LICENSE.
Testing & coverage
pip install -r requirements.txt pytest pytest-cov
bash scripts/ci_coverage_badge.sh -- tests/ -q --cov=skopos
227 pytest cases · line coverage on skopos/ tracked in docs/badges/coverage.svg (regenerate with bash scripts/ci_coverage_badge.sh, verified by CI).
Screenshots
Captured from skopos.modelmarket.dev — Analytics dashboards (traffic timeline + country-share donuts) in six themes (sidebar Theme picker):
Light · Premium
Cosmos (midnight) · Ocean
Aurora · Slate
| View | Screenshot |
|---|---|
| Security — 3D Threat Map | |
| Sidebar & navigation | |
| Floating AI agent |
Regenerate hero + theme gallery from production:
export SKOPOS_DASHBOARD_PASSWORD='…'
pip install playwright pillow && playwright install chromium
python scripts/capture_readme_screenshots.py --base-url https://skopos.modelmarket.dev/app/
Metadata
Release files for skopos-fleet 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| skopos_fleet-0.2.0.tar.gz | 631.5 kB | Without provenance | Details for skopos_fleet-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| skopos_fleet-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for skopos_fleet-0.2.0-py3-none-any.whl |
Total release size: 1.2 MB
Release files / skopos_fleet-0.2.0.tar.gz
| Download URL | skopos_fleet-0.2.0.tar.gz |
|---|---|
| Size | 631.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d5c1ec59cfd55a4171286cb455975e936238df22e31f9c030af60c0678e04496
|
|
BLAKE2b-256 checksum How to use checksums |
975ea1da07c08214ca0f25eb12bb3f23e47e4da5025dfeb35f1029cc44424b7a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Release files / skopos_fleet-0.2.0-py3-none-any.whl
| Download URL | skopos_fleet-0.2.0-py3-none-any.whl |
|---|---|
| Size | 564.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
878c467d3a11f879f2a2c2377ed320e058de86b090ac6dedce7e7e70fc93e9bb
|
|
BLAKE2b-256 checksum How to use checksums |
6d50203159903fc9d00a60f56e459e43ae7b401e7e349bac63e15b30d85be730
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.6
|
Security for skopos-fleet 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.