Skip to main content

FYOS-Hub

Der Hub von FYOS (For Your Own Sake): ein MCP-Server, der viele Plugins unter einer Adresse anbietet. Ein Plugin liefert Werkzeuge und, wenn es will, eine Oberfläche (ui://-HTML). Die Shell zeigt diese Oberflächen als Fenster, jeder MCP-Client mit MCP-Apps-Unterstützung im Gespräch.

Der Hub spricht dreierlei:

  • MCP unter /mcp (Streamable HTTP) für Agenten und Chat-Clients,
  • REST unter /hub/* für die Shell und Skripte,
  • Gesundheit unter /health.

Die genauen Wege und Formate stehen in docs/HUB-VERTRAG.md.

Installieren und starten

pip install ".[suche]"          # Kern; [suche] bringt Qdrant-Client und numpy (optional)
fyos-hub                        # oder: python3 -m mcp_hub.server

Als Bild: docker build -t fyos-hub hub/ (Build-Argument EXTRA_PIP installiert weitere Plugin-Pakete, z. B. --build-arg EXTRA_PIP="fyos-plugin-finanzen"). Das Bild lauscht auf Port 8080.

Das Bild installiert Plugin-Pakete mit uv statt mit pip. Liegen sie in einem eigenen Paketindex, kommt dessen Adresse als --build-arg FYOS_INDEX_URL=<Index-URL> und steht damit vor PyPI. --index-strategy first-index steht ausdrücklich im Befehl: uv nimmt ein Paket nur aus dem ersten Index, der es führt, ein Paket gleichen Namens auf PyPI kann das eigene also nicht verdrängen (Dependency Confusion; mit pip --extra-index-url wäre das möglich). Die Version von uv ist im Dockerfile fest.

Ohne Konfigurationsdatei lädt der Hub jedes installierte Plugin der Entry-Point-Gruppe mcp_hub.plugins mit seinen Vorgaben. Eine Datei (MCP_HUB_CONFIG_PATH, Vorgabe ./config.yaml) braucht es nur für Plugin-Einstellungen, Geheimnisse oder enabled: false; siehe config.example.yaml.

Mitgelieferte Plugins

Plugin Zweck
skills Arbeitsanleitungen (<quelle>/<name>/SKILL.md) durchsuchen und lesen
werkstatt angemeldete Skripte (Kopfblock WERKSTATT) finden und mit Trockenlauf ausführen
mcp Werkzeugkasten: Plugins, Werkzeuge, Apps und Protokolle des Hubs ansehen
shell Anordnung der offenen Shell (Fenster, Raster) als Werkzeuge
audit Protokoll aller Werkzeugaufrufe (Ringpuffer, mit Qdrant Vektorsuche)
event_bus_publisher Ereignisse je Werkzeugaufruf auf Redis-Streams (sonst im Speicher)
beispiel_app Notizzettel mit Oberfläche, Vorlage für eigene Apps
echo, math Referenz-Plugins, standardmäßig aus

Alles Weitere (Finanzen, Haus, Betrieb …) sind eigene Pakete, die sich per Entry-Point melden.

Ein eigenes Plugin

# pyproject.toml des Plugin-Pakets
[project.entry-points."mcp_hub.plugins"]
meins = "mein_paket.plugin:MeinPlugin"
uv pip install ./mein-plugin    # danach lädt der Hub es ohne Eintrag in config.yaml

Die Klasse erbt von mcp_hub.plugin.HubPlugin (register, describe_tools, call, optional health, describe_resources). Hat das Plugin eine Oberfläche, liegen die HTML-Dateien in <paket>/ui/; das Plugin übergibt den Paketnamen an mcp_hub.plugins._oberflaeche.oberflaeche(datei, "mein_paket"), und _identitaet.registriere_app(...) gibt der App Titel, Symbol und Farbton. plugins/beispiel_app.py zeigt alles in 200 Zeilen.

Umgebungsvariablen

Variable Wirkung
MCP_HUB_CONFIG_PATH Pfad der YAML-Datei
MCP_HUB_HOST, MCP_HUB_PORT, MCP_HUB_PATH Adresse, Port (8080), MCP-Pfad (/mcp)
FYOS_OEFFENTLICH_URL öffentliche Adresse der Installation (Links, erlaubter Origin, Zielgruppe der Anmeldung)
FYOS_ERLAUBTE_HOSTS weitere erlaubte Hostnamen/Origins, mit Komma getrennt (Vorgabe: localhost, 127.0.0.1)
FYOS_OS_URL Adresse der Shell, falls nicht <FYOS_OEFFENTLICH_URL>/os
TZ Zeitzone des Hubs (Tageszähler und Zeitfenster der Takte), z. B. Europe/Berlin; ohne Angabe UTC
REDIS_URL Redis für Ansichten, Suchspur, Ereignisse, OS-Brücke; ohne: Speicher im Prozess
QDRANT_URL Vektorsuche im Audit-Protokoll; ohne: Ringpuffer
FYOS_EMBED_URL, FYOS_EMBED_MODEL, FYOS_EMBED_KEY OpenAI-kompatibler Einbettungsdienst (/v1/embeddings) für Audit und Werkzeugsuche
FYOS_SKILLS_PATH Skill-Quellen, mit : getrennt (Vorgabe /opt/fyos/skills)
FYOS_REPO_PATH Repo der Werkstatt (Vorgabe /opt/fyos/repo)
FYOS_OIDC_ISSUER schaltet die Anmeldung ein (siehe unten)

Die OS-Brücke braucht für mehrere Replikate Redis; ein einzelner Hub funktioniert nur mit REDIS_URL.

Takte begrenzen

Wiederkehrende Aufgaben eines Plugins erscheinen in mcp.zeitplan und /metrics. Fährt das Plugin sie über den Wächter mcp_hub.takt, können sie zwei Grenzen haben: max_pro_tag (Läufe je Tag) und fenster (Uhrzeiten wie "07:00-22:00", auch über Mitternacht). Außerhalb des Fensters oder über dem Limit läuft die Aufgabe nicht; der Hub zählt die übersprungenen Läufe (fyos_zeitplan_uebersprungen_total{takt, grund}, dazu fyos_zeitplan_laeufe_heute{takt}) und führt je Takt ein knappes Laufprotokoll (Start, Dauer, Ergebnis; die letzten 20 Läufe) im Hub-Speicher. Tag und Uhrzeit gelten in der Zeitzone des Hubs (TZ). Ohne Grenzen läuft alles wie vorher. Die Takte des mitgelieferten Plugins openclaw stellt takt_grenzen in seiner config ein (config.example.yaml); eigene Plugins binden den Wächter nach docs/ERWEITERN.md §2.12 ein.

Anmeldung (optional)

Innen, im eigenen Netz, ist der Hub offen. Soll er auch aus dem Internet erreichbar sein, genügt ein OpenID-Connect-Anbieter: FYOS_OIDC_ISSUER und FYOS_OIDC_CLIENTS (Client-IDs, mit Komma) setzen, der Reverse-Proxy setzt auf Anfragen aus dem Internet den Kopf X-FYOS-Zugang: extern. Dann verlangt /mcp für diese Anfragen ein gültiges Token (RFC 9728, Discovery der Schlüssel, nur RS256/ES256/EdDSA). Weitere Schalter: FYOS_OIDC_MODUS (aus, an, streng), FYOS_OIDC_HOSTS, FYOS_OIDC_REST, FYOS_OIDC_BENUTZER, FYOS_OIDC_SCOPES, FYOS_OIDC_JWKS_URL. Ohne FYOS_OIDC_ISSUER antworten Anfragen von außen mit 403.

Bewusst nicht enthalten

Aus dem Ursprung dieses Hubs sind nur die allgemeinen Teile übernommen. Nicht enthalten sind die Plugins wissen und gedaechtnis, die Entwicklungsansicht (entwicklung, lage), das Chat-Tor (chat_gateway: der Hub ist selbst ein OIDC-geschützter Ressourcenserver) und alles, was zu einer einzelnen Installation gehört. Solche Plugins gehören in eigene Pakete.

Tests

pip install -e ".[suche,test]"
python3 -m pytest hub/tests -q

Metadata

Release files for fyos-hub 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fyos-hub 0.1.0
File Size Uploaded Provenance
fyos_hub-0.1.0.tar.gz 351.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fyos-hub 0.1.0
File Interpreter ABI Platform
fyos_hub-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 649.6 kB

Release files / fyos_hub-0.1.0.tar.gz

Download URL fyos_hub-0.1.0.tar.gz
Size 351.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a46351c145350f8e7f62510385d802a58e59eadea112780655dc37e8e2d42a44
BLAKE2b-256 checksum
How to use checksums
5a2ad26ffd0d3d10d15b3d43e5c742215b5bf1c12029a7aae2f7dc4c54344c54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Release files / fyos_hub-0.1.0-py3-none-any.whl

Download URL fyos_hub-0.1.0-py3-none-any.whl
Size 298.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe100ccfb3c38d1cf3c52c3f0e4a2d6978561035b54ccf26b1baf4e0b4de53f9
BLAKE2b-256 checksum
How to use checksums
47a11624cf5085cea5b88e312822394c2ef44c22c594774051cf9f5f44451a51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

Security for fyos-hub 0.1.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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for fyos_hub-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page