Zurück zu den Updates
New releaseJul 25, 2026

ogi v0.8.0

Open-Source-Link-Analyse- & OSINT-Framework

Teilen
OGI Mascot

OpenGraph Intel (OGI)

Open-Source-Framework für visuelle Linkanalyse und OSINT. Kostenlos, selbst hostbar und gemeinschaftsgetrieben.

License: AGPL v3 CI Docker Python 3.14+ TypeScript React FastAPI Version

FunktionenBildschirmfotosSchnellstartDockerTransform-HubArchitekturMitwirken


Hinweis: Dieses Projekt entwickelt sich aktiv weiter. Es verfügt über solide Kernfunktionen und Testabdeckung, und wir verbessern mit jedem Release kontinuierlich die Dokumentation, Härtung und Funktionstiefe. Beiträge, Fehlermeldungen und Rückmeldungen sind sehr willkommen.

Funktionen

  • Visuelle Graphenuntersuchung — Entitäten per Drag-and-Drop verschieben, Verbindungen interaktiv erkunden
  • 20+ integrierte Transforms — DNS, WHOIS, SSL-Zertifikate, Geolokalisierung, Web-/E-Mail-/Hash-/Social-Anreicherung und mehr
  • Transform-Hub — Community-Transforms aus der Registry durchsuchen und installieren
  • KI-Ermittler — promptgesteuerte agentische Untersuchungen, die Transform-Abläufe planen, Fortschritte live streamen und Ergebnisse mit Nachvollziehbarkeit zusammenfassen
  • Import / Export — Import im JSON-, CSV-, GraphML- und MTGX-Format
  • Graphenanalyse — Zentralität, Gemeinschaftserkennung, kürzeste Pfade
  • Echtzeit-Zusammenarbeit — Projekte, Teilen und Live-Synchronisation über Supabase Realtime
  • Asynchrone Transform-Jobs — Redis/RQ-Warteschlange mit WebSocket-Fortschrittsaktualisierungen
  • Plugin-System — verzeichnisbasierte Plugin-Erkennung mit YAML-Manifesten
  • CLI-Werkzeug — Transforms über das Terminal suchen, installieren und verwalten
  • Läuft überall — lokaler SQLite-Modus (null Konfiguration) oder PostgreSQL + Supabase für Team-/Cloud-Setups
  • Docker-bereit — Ein-Kommando-Bereitstellung mit docker compose up

Bildschirmfotos

GraphenuntersuchungEntitätenanreicherung
GraphenuntersuchungEntitätenanreicherung
Transform-HubExport / Import
Transform-HubExport Import

Schnellstart

Voraussetzungen

WerkzeugVersion
Python3.14+
uvlatest
Node.js20+
pnpmlatest

Backend```bash

cd backend uv sync uv run uvicorn ogi.main:app --reload

Die API wird unter `http://localhost:8000` verfügbar sein.

Für die lokale Transform-Ausführung müssen Redis und der transform worker ebenfalls laufen. Redis allein reicht nicht.```bash
docker run -d --name ogi-redis -p 6379:6379 redis:7-alpine

Starten Sie den Transform-Worker in einem zweiten Terminal:```bash cd backend uv run python -m ogi.worker.run_worker

Falls Sie `Job queue not available` oder `Redis not available` sehen, überprüfen Sie Folgendes:

- `OGI_REDIS_URL` zeigt auf `redis://localhost:6379/0` für lokale host-basierte Ausführungen
- das Backend wurde neu gestartet, nachdem Redis hochgefahren war
- der separate Worker-Prozess läuft
- Sie verwenden nicht den Docker-exklusiven Hostnamen `redis` außerhalb von Docker Compose

Wenn Sie das Backend gegen PostgreSQL betreiben (`OGI_USE_SQLITE=false`), wendet der Start automatisch Alembic-Migrationen an, bevor Anfragen bedient werden. Docker-Bereitstellungen machen dasselbe im Backend-Container-Entrypoint.

AI Investigator-Läufe werden von einem weiteren separaten Worker verarbeitet:```bash
cd backend
uv run python -m ogi.agent.run_worker

Frontend```bash

cd frontend pnpm install pnpm dev

Öffne http://localhost:5173. Das war's.

### KI-Ermittler

Der KI-Ermittler ist ein optionaler, anbieterunterstützter Workflow, der Transformationssequenzen planen, Genehmigungen anfordern und den Untersuchungsfortschritt im Arbeitsbereich zusammenfassen kann.

- Öffnen Sie den Reiter `AI Investigator` in einem Projekt
- Konfigurieren Sie einen Anbieter und ein Modell im Ermittlereinstellungsdialog
- Speichern Sie Anbieter-API-Schlüssel unter `API Keys`
- Führen Sie den separaten `agent-worker`-Prozess zusammen mit dem Backend aus

Die aktuelle Implementierung unterstützt pro Benutzer konfigurierbare Anbieter und einen dedizierten Worker, der Untersuchungsschritte unabhängig vom Haupt-API-Server ausführt.

### CLI

Zwei unterstützte Möglichkeiten zur Ausführung der CLI:

**Empfohlen** (keine Aktivierung erforderlich):```bash
cd backend
uv sync
uv run ogi --help

Aktiviertes virtualenv (einfacher ogi-Befehl):```bash cd backend uv venv

PowerShell:

..venv\Scripts\Activate.ps1 uv pip install -e . ogi --help

## Docker

### Entwicklung```bash
cp .env.example .env
docker compose up

Produktion

Verwenden Sie die vorgefertigten GHCR-Images.

Wichtig: docker-compose.prod.yml erfordert eine externe PostgreSQL-Datenbank. Es enthält keinen db-Dienst.

Wenn Sie den All-in-One lokalen Docker-Stapel mit integriertem Postgres und Redis verwenden möchten, verwenden Sie:```bash docker compose up -d

Verwenden Sie die Produktions-Compose-Datei nur, wenn Sie bereits eine erreichbare PostgreSQL-Instanz haben und `OGI_DATABASE_URL` entsprechend gesetzt haben:```bash
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d

Setzen Sie OGI_IMAGE_TAG in .env, um einen bestimmten Release-Image-Tag festzulegen (z.B. v0.2.6). Standardmäßig wird latest verwendet.

Hetzner Cloud

Get Hetzner Cloud credits Deploy Docker CE on Hetzner

Neue Hetzner-Benutzer können den ersten Link verwenden, um sich mit Hetzner Cloud Credits anzumelden. Es handelt sich um einen Empfehlungslink, sodass der OGI-Maintainer möglicherweise ebenfalls Hetzner Cloud Credits erhält, wenn die Empfehlung qualifiziert ist. Nach dem Erstellen eines Servers verwenden Sie die obigen Docker-Bereitstellungsbefehle, um OGI auszuführen.

Konfigurierbare Transformationsgrenzen

OGI wird mit sinnvollen transformationsspezifischen Maximalwerten für Dinge wie max_results, max_links, max_urls und max_content_chars ausgeliefert, aber diese Grenzen sind jetzt zentral überschreibbar, sodass Cloud-Bereitstellungen sie durchsetzen können, ohne lokale Limits fest codieren zu müssen.

Verwenden Sie OGI_TRANSFORM_SETTING_MAX_OVERRIDES in .env:```env OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=50,max_urls=25,max_links=40,max_content_chars=20000

Um bestimmte Einschränkungen in einer lokalen Bereitstellung zu entfernen:```env
OGI_TRANSFORM_SETTING_MAX_OVERRIDES=max_results=none,max_urls=none,max_links=none,max_content_chars=none

Die Überschreibung erfolgt über den Namen der Transform-Einstellung und gilt sowohl für eingebaute Transforms als auch für Community-Plugins, die die gemeinsame Transform-Basis/-Laufzeitumgebung von OGI nutzen.

Gehostete Cloud-Instanz und Supporter-Plan

Die gehostete Cloud-Version unter ogi.khas.app wurde ursprünglich entwickelt, damit Nutzer OGI schnell ausprobieren können, bevor sie sich für eine Selbsthosting-Lösung entscheiden. Sie ist inzwischen die beliebteste Nutzungsform des Projekts mit über 350 aktiven Cloud-Nutzern.

Diese Nutzung hat auch die Infrastrukturkosten für dieses Nebenprojekt erhöht. Das Repository enthält daher ein Cloud-exklusives Supporter-Abonnement und ein Abkühlungssystem für Transformer-Aufrufe. In der öffentlichen Cloud-Instanz können kostenlose Nutzer durch ein Timeout zwischen Transformer-Aufrufen eingeschränkt sein, während Supporter-Nutzer für symbolische 3 USD/Monat abonnieren können, um bei der Deckung der Supabase- und VPS-Kosten zu helfen.

Supporter-Abonnements können über die Profil-Abrechnungssteuerung oder das Stripe-Abrechnungsportal gekündigt werden. Die Kündigung beendet zukünftige Zahlungen, aber bereits bezahlte Abonnementzeiträume werden nicht erstattet oder anteilig zurückgezahlt.

Dieser Abrechnungscode ist absichtlich durch die Konfiguration geschützt: Er wirkt sich nur aus, wenn OGI_DEPLOYMENT_MODE=cloud und OGI_CLOUD_BILLING_ENABLED=true gesetzt sind. Selbstgehostete Bereitstellungen sollten die Abrechnung deaktiviert lassen und keinerlei Abrechnungs- oder Paywall-Verhalten zeigen.

Telemetrie

OGI enthält installationsbezogene Produkttelemetrie, die uns helfen soll, die tatsächliche Nutzung zu verstehen, insbesondere bei selbstgehosteten Bereitstellungen.

  • OGI_TELEMETRY_ENABLED=true aktiviert die Telemetrieerfassung
  • OGI_TELEMETRY_LEVEL=full ist die Standard-Erfassungsstufe
  • setze OGI_TELEMETRY_ENABLED=false, um die Telemetrie vollständig zu deaktivieren
  • setze OGI_TELEMETRY_LEVEL=basic, um die gesendeten Daten zu reduzieren

basic sendet:

  • OGI-Version
  • einen täglichen Ping zur aktiven Installation

full sendet zusätzlich:

  • Erstellungsdatum der Instanz
  • aggregierte Zählungen für Projekte, Entitäten, Kanten, Transform-Ausführungen, Investigator-Ausführungen und aktive Nutzer für den Zeitraum
  • installierte Transforms mit ihren Versionen

Telemetrie ist so konzipiert, dass sie das Senden von Grapheninhalten, Entitätswerten, API-Schlüsseln, Prompts oder anderen Untersuchungsdaten vermeidet. Die aktuellen Richtliniendetails sind auch in der Datenschutzerklärung veröffentlicht.

Entwicklungs-Compose-Dienste
DienstBeschreibungPort
backendFastAPI-Anwendungsserver8000
workerRQ-Async-Job-Worker-
agent-workerAI-Investigator-Worker-
frontendReact-App bereitgestellt via nginx80
dbPostgreSQL 165432
redisRedis 7 (Job-Warteschlange)6379
Produktions-Compose-Dienste
DienstBeschreibungPort
backendFastAPI-Anwendungsserver8000
workerRQ-Async-Job-Worker-
agent-workerAI-Investigator-Worker-
frontendReact-App bereitgestellt via nginx80
redisRedis 7 (Job-Warteschlange)6379

docker-compose.prod.yml erwartet eine externe PostgreSQL-Datenbank über OGI_DATABASE_URL.


Plugin-Abhängigkeiten zur Startzeit

Wenn du vorgefertigte Images verwendest und ein Plugin zusätzliche Python-Bibliotheken benötigt, installiert OGI die Plugin-Abhängigkeiten beim Container-Start aus:

  1. plugins/requirements.txt (bevorzugt) oder
  2. automatisch generierte Anforderungen aus plugins/ogi-lock.json, wenn requirements.txt fehlt.

Umgebungsvariablen:

VariableStandardBeschreibung
OGI_BOOT_REQUIREMENTS_ENABLEtrueAktivieren/Deaktivieren der Installation zur Startzeit
OGI_BOOT_REQUIREMENTS_FILE/app/plugins/requirements.txtPfad zur Requirements-Datei
OGI_BOOT_LOCK_FILE/app/plugins/ogi-lock.jsonPfad zur Lock-Datei
OGI_BOOT_REQUIREMENTS_STRICTfalseStart abbrechen, wenn Requirements fehlen
OGI_BOOT_REQUIREMENTS_CACHE_DIR/tmp/ogi-bootTemporär-/Cache-Verzeichnis für generierte Requirements

Transform Hub

OpenGraph Intel verfügt über einen integrierten Transform-Marktplatz. Durchstöbere, installiere und verwalte Transforms aus der Community-Registry.

Sicherheitshinweis: Plugins, die API-Schlüssel benötigen, sollten als privilegierter Code behandelt werden. Wenn ein Plugin auf deine Geheimnisse zugreifen und ausgehende Netzwerkanfragen stellen kann, kann es diese Geheimnisse missbrauchen oder exfiltrieren. Überprüfe die Vertrauensstufe, Berechtigungen und erforderlichen Dienste, bevor du Plugins von Drittanbietern installierst oder ausführst.```bash

Search for transforms

uv run ogi transform search dns

Install a transform

uv run ogi transform install shodan-host-lookup

### Integrierte Transformationskategorien

| Kategorie | Beispiele                              |
| --------- | -------------------------------------- |
| DNS       | A, AAAA, MX, NS, CNAME-Einträge        |
| IP & ASN  | GeoIP, Reverse-IP, ASN-Info            |
| SSL/TLS   | Zertifikatstransparenz, SSL-Labs       |
| E-Mail    | Mailserver-Validierung, Leak-Prüfungen |
| Web       | WHOIS, Domain-Info, Web-Extraktion     |
| Sozial    | Benutzername-Enumeration, soziale Profile |
| Hash      | MD5-, SHA1-, SHA256-Abfragen           |
| Standort  | Geokodierung, Wetter, nahegelegene ASN-Daten |

### Unterstützte Entitätstypen

`Person` • `Username` • `Domain` • `IPAddress` • `EmailAddress` • `PhoneNumber` • `Organization` • `URL` • `SocialMedia` • `Hash` • `Document` • `Location` • `ASNumber` • `Network` • `MXRecord` • `NSRecord` • `Nameserver` • `SSLCertificate` • `Subdomain` • `HTTPHeader`

### Eigene Transformationen erstellen

Möchten Sie eigene erstellen? Siehe den [Beitragsleitfaden](https://github.com/opengraphintel/ogi-transforms/blob/main/CONTRIBUTING.md).

Wenn Ihre Transformation externe Dienst-Anmeldedaten benötigt, deklarieren Sie diese in `api_keys_required`. Speichern Sie keine Geheimnisse in den Transformationseinstellungen. OGI verwaltet diese unter `API Keys`, und Plugins, die Geheimnisse verwenden, gelten als privilegierter Code.

Wenn Ihre Transformation begrenzte Einstellungen wie `max_results` oder `max_content_chars` bereitstellt, bevorzugen Sie stabile Einstellungsnamen gegenüber maßgeschneiderten Einmalnamen, wo möglich. OGI kann zentral Maximalwerte mit `OGI_TRANSFORM_SETTING_MAX_OVERRIDES` überschreiben, was Cloud-Bereitstellungen hilft, Grenzwerte durchzusetzen, während lokale Benutzer sie entfernen können.

Jedes Plugin ist ein Verzeichnis mit einem `plugin.yaml`-Manifest:```yaml
name: my-transform
version: "1.0.0"
display_name: My Transform
description: What it does
author: Your Name
license: MIT
category: dns
input_types: [Domain]
output_types: [IPAddress]
permissions:
  network: true
  filesystem: false
  subprocess: false

Architektur

Technologie-Stack

SchichtTechnologie
BackendPython 3.14+, FastAPI, SQLModel, asyncpg / aiosqlite
FrontendReact 19, TypeScript 5.9, Sigma.js (graphology), Zustand, Tailwind CSS 4
DatenbankPostgreSQL 16 (primary) / SQLite (lokaler Fallback)
Auth & EchtzeitSupabase Auth + JWT + Realtime (optional im lokalen Modus)
Job-WarteschlangeRedis 7 + RQ (asynchrone Transformationen)
KI-LaufzeitumgebungAnbieter-gestützter AI Investigator worker mit auditierter Transform-Orchestrierung
Paketmanageruv (backend), pnpm (frontend)
BereitstellungDocker, nginx, GHCR

Projektstruktur```

ogi/ ├── backend/ │ └── ogi/ │ ├── api/ # REST API routes │ ├── cli/ # CLI tool (Typer) │ ├── db/ # Database layer (asyncpg + aiosqlite) │ ├── engine/ # Graph engine & transform engine │ ├── models/ # SQLModel definitions │ ├── store/ # Data stores │ ├── transforms/ # Built-in transforms │ │ ├── dns/ # DNS resolution transforms │ │ ├── cert/ # SSL certificate transforms │ │ ├── email/ # Email enrichment │ │ ├── hash/ # Hash lookups │ │ ├── ip/ # IP/ASN/geolocation │ │ ├── org/ # Organization info │ │ ├── social/ # Social media │ │ └── web/ # Web scraping/extraction │ ├── worker/ # Async job queue (RQ) │ ├── config.py # Pydantic settings │ └── main.py # FastAPI entry point ├── frontend/ │ └── src/ │ ├── api/ # API client │ ├── components/ # React components │ ├── hooks/ # Custom hooks (realtime sync, etc.) │ ├── stores/ # Zustand state management │ ├── types/ # TypeScript types │ └── App.tsx # Main application ├── plugins/ # Community plugins directory ├── docs/ # Documentation & images ├── docker-compose.yml # Development deployment ├── docker-compose.prod.yml # Production deployment └── .env.example # Environment template

### Konfiguration

OGI nutzt [pydantic-settings](https://docs.pydantic.dev/latest/concepts/pydantic_settings/) mit `.env`-Dateiunterstützung. Laufzeit-/Backend-Variablen sind mit `OGI_` präfixiert.

Listeneinstellungen akzeptieren entweder:

- JSON-Arrays, z. B. `["plugins","../plugins"]`
- Komma-getrennte Zeichenketten, z. B. `plugins,../plugins`

<details>
<summary><strong>Wichtige Umgebungsvariablen</strong></summary>

| Variable                                        | Beschreibung                                                                                                  | Standard                                           |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| `OGI_APP_NAME`                                  | Anwendungsname                                                                                                | `OGI`                                              |
| `OGI_HOST`                                      | Backend-Bind-Host                                                                                             | `0.0.0.0`                                          |
| `OGI_PORT`                                      | Backend-Port                                                                                                  | `8000`                                             |
| `OGI_CORS_ORIGINS`                              | Erlaubte Frontend-Ursprünge                                                                                   | `http://localhost:5173,http://localhost:3000`      |
| `OGI_USE_SQLITE`                                | SQLite statt PostgreSQL verwenden                                                                             | `true`                                             |
| `OGI_DB_PATH`                                   | SQLite-Datenbankdateipfad                                                                                     | `ogi.db`                                           |
| `OGI_DATABASE_URL`                              | PostgreSQL-Verbindungszeichenfolge                                                                            | `postgresql://postgres:postgres@localhost:5432/ogi`|
| `OGI_REDIS_URL`                                 | Redis-Verbindungszeichenfolge für RQ/Jobs                                                                     | `redis://localhost:6379/0`                         |
| `OGI_RQ_QUEUE_NAME`                             | Warteschlangenname für Transform-Jobs                                                                         | `transforms`                                       |
| `OGI_TRANSFORM_TIMEOUT`                         | Zeitüberschreitung pro Transform-Job in Sekunden                                                              | `300`                                              |
| `OGI_AGENT_WORKER_POLL_INTERVAL_SEC`            | Abfrageintervall für den AI Investigator Worker                                                               | `2.0`                                              |
| `OGI_AGENT_CLAIM_TIMEOUT_SEC`                   | Zeitüberschreitung für veraltete Claims bei der Wiederherstellung von AI Investigator-Schritten               | `120`                                              |
| `OGI_AUTO_RUN_MIGRATIONS`                       | Automatisches Ausführen von Alembic beim lokalen Nicht-SQLite-App-Start                                       | `true`                                             |
| `OGI_RUN_DB_MIGRATIONS`                         | Datenbankmigrationen im Container-Entrypoint ausführen                                                        | `false`                                            |
| `OGI_DB_MIGRATION_RETRIES`                      | Anzahl der Wiederholungsversuche bei Migrationen im Entrypoint                                                | `30`                                               |
| `OGI_DB_MIGRATION_DELAY_SECONDS`                | Verzögerung zwischen den Wiederholungsversuchen der Migrationen im Entrypoint                                 | `2`                                                |
| `OGI_PLUGIN_DIRS`                               | Plugin-Suchverzeichnisse                                                                                      | `plugins,../plugins`                               |
| `OGI_DEPLOYMENT_MODE`                           | Bereitstellungsmodus (`self-hosted` oder `cloud`)                                                             | `self-hosted`                                      |
| `OGI_CLOUD_BILLING_ENABLED`                     | Cloud-exklusive Abrechnung für Supporter und Abklingzeit-Erzwingung für Transform-Vorgänge aktivieren         | `false`                                            |
| `OGI_FREE_TRANSFORM_COOLDOWN_SECONDS`           | Abklingzeit zwischen kostenlosen Cloud-Benutzer-Transformator-Läufen                                          | `1800`                                             |
| `OGI_PAID_TRANSFORM_COOLDOWN_SECONDS`           | Abklingzeit zwischen kostenpflichtigen Cloud-Benutzer-Transformator-Läufen                                    | `0`                                                |
| `OGI_STRIPE_SECRET_KEY`                         | Serverseitiger Stripe-Geheimschlüssel für Checkout- und Portal-Sitzungen                                      | nicht gesetzt                                      |
| `OGI_STRIPE_WEBHOOK_SECRET`                     | Stripe-Webhook-Signaturgeheimnis                                                                              | nicht gesetzt                                      |
| `OGI_STRIPE_SUPPORTER_PRICE_ID`                 | Wiederkehrende Stripe-Preis-ID für den Supporter-Tarif                                                        | nicht gesetzt                                      |
| `OGI_STRIPE_SUPPORTER_AMOUNT_CENTS`             | Anzeigebetrag für den Supporter-Tarif                                                                         | `300`                                              |
| `OGI_STRIPE_SUPPORTER_CURRENCY`                 | Anzeigewährung für den Supporter-Tarif                                                                        | `usd`                                              |
| `OGI_BILLING_SUCCESS_URL`                       | Optionale Stripe-Checkout-Erfolgsweiterleitung                                                                | aus Anfrage abgeleitet                             |
| `OGI_BILLING_CANCEL_URL`                        | Optionale Stripe-Checkout-Abbruchweiterleitung                                                                | aus Anfrage abgeleitet                             |
| `OGI_BILLING_PORTAL_RETURN_URL`                 | Optionale Stripe-Abrechnungsportal-Rückgabe-URL                                                               | aus Anfrage abgeleitet                             |
| `OGI_REGISTRY_REPO`                             | Transform-Registry-GitHub-Repo                                                                                | `opengraphintel/ogi-transforms`                    |
| `OGI_REGISTRY_CACHE_TTL`                        | Cache-TTL der Registry in Sekunden                                                                            | `3600`                                             |
| `OGI_TRANSFORM_SETTING_MAX_OVERRIDES`           | Optionales globales Maximum an Überschreibungen für Transform-Einstellungen                                   | leer                                               |
| `OGI_GITHUB_TOKEN`                              | Optionales GitHub-Token für Registry/API-Ratenbegrenzungen                                                    | nicht gesetzt                                      |
| `OGI_SUPABASE_URL`                              | Supabase-Projekt-URL                                                                                          | nicht gesetzt                                      |
| `OGI_SUPABASE_ANON_KEY`                         | Supabase-anonymer/öffentlicher Schlüssel                                                                      | nicht gesetzt                                      |
| `OGI_SUPABASE_SERVICE_ROLE_KEY`                 | Supabase-Dienstrollenschlüssel                                                                                | nicht gesetzt                                      |
| `OGI_SUPABASE_JWT_SECRET`                       | Supabase-JWT-Geheimnis                                                                                        | nicht gesetzt                                      |
| `OGI_SUPABASE_REDIRECT_URL`                     | Weiterleitungs-URL für Frontend-Authentifizierungsabläufe                                                     | nicht gesetzt                                      |
| `OGI_ADMIN_EMAILS`                              | Admin-Benutzer für Registry-/Plugin-Verwaltung                                                                | nicht gesetzt                                      |
| `OGI_TELEMETRY_ENABLED`                         | Installationsebene-Telemetrie aktivieren oder deaktivieren                                                    | `true`                                             |
| `OGI_TELEMETRY_LEVEL`                           | Telemetrieebene (`basic` oder `full`)                                                                         | `full`                                             |
| `OGI_API_KEY_ENCRYPTION_KEY`                    | Fernet-Schlüssel für verschlüsselte API-Schlüsselspeicherung                                                  | nicht gesetzt, aber dringend empfohlen             |
| `OGI_API_KEY_INJECTION_ALLOW_COMMUNITY_PLUGINS` | Community-Plugins erlauben, gespeicherte API-Schlüssel zu erhalten                                            | `true`                                             |
| `OGI_API_KEY_INJECTION_TRUSTED_TIERS_ONLY`      | Injektion gespeicherter Schlüssel auf vertrauenswürdige Stufen beschränken                                     | `false`                                            |
| `OGI_API_KEY_INJECTION_ALLOWED_TIERS`           | Zulässige Stufen, wenn der Modus „nur vertrauenswürdig“ aktiviert ist                                          | `official,verified`                                |
| `OGI_API_KEY_SERVICE_ALLOWLIST`                 | Optionale zulässige Dienste für die Injektion gespeicherter Schlüssel                                          | leer                                               |
| `OGI_API_KEY_SERVICE_BLOCKLIST`                 | Optionale blockierte Dienste für die Injektion gespeicherter Schlüssel                                         | leer                                               |
| `OGI_LLM_PROVIDER`                              | Standard-Fallback des AI Investigator-Anbieters                                                               | `openai`                                           |
| `OGI_LLM_MODEL`                                 | Standard-Fallback des AI Investigator-Modells                                                                | `gpt-4.1-mini`                                     |
| `OGI_EXPOSE_ERROR_DETAILS`                      | Interne Details in 500-Antworten einbeziehen                                                                  | `false`                                            |
| `OGI_SANDBOX_ENABLED`                           | Sandbox-Ausführungsmodus aktivieren                                                                           | `false`                                            |
| `OGI_SANDBOX_TIMEOUT`                           | Sandbox-Zeitüberschreitung in Sekunden                                                                        | `30`                                               |
| `OGI_SANDBOX_MEMORY_MB`                         | Sandbox-Speicherbegrenzung in MB                                                                              | `256`                                              |
| `OGI_SANDBOX_ALLOWED_TIERS`                     | Zulässige Stufen im Cloud-Sandbox-Modus                                                                       | `official,verified`                                |
| `OGI_BOOT_REQUIREMENTS_ENABLE`                  | Installieren von Plugin-Abhängigkeiten beim Start aktivieren                                                  | `true`                                             |
| `OGI_BOOT_REQUIREMENTS_FILE`                    | Pfad zur Datei mit den Startanforderungen                                                                     | `/app/plugins/requirements.txt`                    |
| `OGI_BOOT_LOCK_FILE`                            | Pfad zur Start-Sperrdatei                                                                                     | `/app/plugins/ogi-lock.json`                       |
| `OGI_BOOT_REQUIREMENTS_STRICT`                  | Start fehlschlagen lassen, wenn Plugin-Anforderungen fehlen                                                  | `false`                                            |
| `OGI_BOOT_REQUIREMENTS_CACHE_DIR`               | Temporäres/Cache-Verzeichnis für die Generierung der Startanforderungen                                       | `/tmp/ogi-boot`                                    |
| `OGI_FRONTEND_PORT`                             | Lokales Docker-Frontend-Port-Mapping                                                                          | `3000`                                             |
| `OGI_IMAGE_TAG`                                 | Produktions-Image-Tag für Compose/Coolify-ähnliche Bereitstellungen                                           | `latest`                                           |
| `OGI_BACKEND_IMAGE`                             | Optionale Überschreibung des Backend-Images                                                                   | `ghcr.io/khashashin/ogi-backend`                   |
| `OGI_WORKER_IMAGE`                              | Optionale Überschreibung des Worker-Images. Standardmäßig Backend-Image, da Worker und Backend denselben Image-Build teilen. | `ghcr.io/khashashin/ogi-backend`                   |
| `OGI_FRONTEND_IMAGE`                            | Optionale Überschreibung des Frontend-Images                                                                  | `ghcr.io/khashashin/ogi-frontend`                  |
| `OGI_CLI_BEARER_TOKEN`                          | Optionales CLI-Bearer-Token für authentifizierte Backends                                                     | nicht gesetzt                                      |

Die vollständige Liste finden Sie in [`.env.example`](https://github.com/khashashin/ogi/blob/HEAD/.env.example).

</details>

## Entwicklung

### Ausführen von Tests```bash
# Backend
cd backend
OGI_DB_PATH=":memory:" OGI_USE_SQLITE=true uv run pytest

# Frontend
cd frontend
pnpm test

Linting & Typüberprüfung```bash

Backend

cd backend uv run ruff check # Linting uv run mypy # Type checking

Frontend

cd frontend pnpm lint # ESLint

### CI Pipeline

Der [CI-Workflow](https://github.com/khashashin/ogi/blob/HEAD/.github/workflows/ci.yml) läuft bei jedem Pull-Request:

- **Backend:** ruff lint, mypy type check, pytest
- **Frontend:** vitest, eslint, vite build

## Mitwirken

PRs willkommen! Wenn du einen Fehler findest oder eine Idee hast, [eröffne ein Issue](https://github.com/khashashin/ogi/issues).

Für neue Transforms trage zu [ogi-transforms](https://github.com/opengraphintel/ogi-transforms) bei.

### Erste Schritte

1. Forke das Repository
2. Erstelle einen Feature-Branch (`git checkout -b feature/my-feature`)
3. Nimm deine Änderungen vor
4. Führe Tests und Linting aus
5. Reiche einen Pull-Request ein

## Rechtmäßige und verantwortungsvolle Nutzung

OGI ist ein universelles OSINT- und Graphenanalyse-Tool. **Du bist allein dafür verantwortlich, wie du es verwendest.** Siehe [LEGAL.md](https://github.com/khashashin/ogi/blob/HEAD/LEGAL.md) für den vollständigen rechtlichen Hinweis.

- **Halte die Nutzungsbedingungen Dritter ein.** Transforms, die externe Dienste abfragen (DNS, WHOIS, Web Scraping, Benutzernamensuche usw.), müssen gemäß den AGB dieser Dienste verwendet werden. Automatisierte oder massenhafte Abfragen von Websites, die dies verbieten, können deren Bedingungen verletzen.
- **Respektiere Datenschutzgesetze.** Wenn du in der EU bist oder Daten über EU-Bürger verarbeitest, gilt die DSGVO für dich als Verantwortlicher. Das Erheben, Speichern oder Verarbeiten personenbezogener Daten (Namen, E-Mail-Adressen, IP-Adressen usw.) erfordert eine Rechtsgrundlage. OGI selbst speichert keine Daten über deine lokale Instanz hinaus – du bist verantwortlich für das, was du sammelst und aufbewahrst.
- **Nur für rechtmäßige Zwecke verwenden.** OGI ist für legitime Sicherheitsforschung, Untersuchungen, Bedrohungsanalyse und Bildungszwecke gedacht. Verwende es nicht, um Personen zu belästigen, unbefugten Zugriff durchzuführen oder geltendes Recht zu verletzen.
- **Dateiformat-Kompatibilität.** OGI unterstützt den Import des MTGX-Graphenaustauschformats. Dies dient ausschließlich der Dateninteroperabilität und impliziert keine Verbindung zu oder Billigung durch die Hersteller von Tools, die dieses Format verwenden.

> **Haftungsausschluss:** OGI wird "wie besehen" ohne jegliche Gewährleistung bereitgestellt. Die Autoren haften nicht für Missbrauch oder Schäden, die aus der Nutzung dieser Software entstehen.

## Lizenz

Dieses Projekt ist unter der [GNU Affero General Public License v3.0](https://github.com/khashashin/ogi/blob/HEAD/LICENSE) lizenziert.

---

<div align="center">

**[Fehler melden](https://github.com/khashashin/ogi/issues) • [Funktion anfragen](https://github.com/khashashin/ogi/issues) • [Diskussionen](https://github.com/opengraphintel/ogi-transforms/discussions)**

Mit 💜 gemacht von der OGI-Community

</div>

Kategorien