Skip to content

Repository files navigation

Demon Cry 🔍

Demon Cry — это автономный OSINT-агент, который использует LLM для проведения расследований в открытых источниках. Агент сам строит гипотезы, выбирает инструменты и анализирует данные.

License: MPL2 Python 3.12+ Docker Release

Быстрый старт (Рекомендуется)

bash <(curl -Ls https://raw.githubusercontent.com/Mooncore-inc/demon-cry/main/install.sh)

Ручная настройка

Нажмите, чтобы открыть

Создайте docker-compose.yml:

services:
  app:
    image: fazzyt/demon-cry
    ports:
      - "8000:8000"
    volumes:
      - ./config.json:/app/config.json:ro,z
    restart: unless-stopped

  searxng:
    image: searxng/searxng:latest
    ports:
      - "8080:8080"
    volumes:
      - ./searxng:/etc/searxng:z
    environment:
      - SEARXNG_BASE_URL=http://localhost:8080/
    restart: unless-stopped

networks:
  demon-cry-net:
    name: demon-cry-net

Создайте config.json:

{
    "base_url": "https://api.openai.com/v1",
    "master_key": "secret", # pragma: allowlist secret
    "api_key": "sk-...", # pragma: allowlist secret
    "model": "gpt-4o",
    "searxng_url": "http://searxng:8080"
}

Создайте папку searxng с файлом settings.yml:

use_default_settings: true

server:
  secret_key: "сюда ключ придумай"
  limiter: false
  bind_address: "0.0.0.0"
  port: 8080

search:
  formats:
    - html
    - json
  cache:
    enable: true
    expiration_time: 3600

engines:
  - name: startpage
    disabled: true

  - name: duckduckgo
    disabled: false
    weight: 1.5

  - name: google
    disabled: false
    weight: 1.5

  - name: bing
    disabled: false
    weight: 1.5

  - name: qwant
    disabled: false
    weight: 1.2

  - name: yandex
    disabled: false
    weight: 1.0

  - name: wikipedia
    disabled: false
    weight: 0.8

Запуск:

docker compose up -d

NixOS (flake)

Нажмите, чтобы открыть

Разовый запуск (нужен config.json в текущей директории):

nix run github:Mooncore-inc/demon-cry -- --host 0.0.0.0 --port 8000

Как NixOS-модуль — добавьте flake в inputs:

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
    demon-cry.url = "github:Mooncore-inc/demon-cry";
  };

  outputs = { nixpkgs, demon-cry, ... }: {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        demon-cry.nixosModules.default
        ./configuration.nix
      ];
    };
  };
}

И включите сервис в конфигурации хоста:

{
  services.demon-cry = {
    enable = true;

    settings = {
      base_url = "https://api.openai.com/v1";
      model = "gpt-4o";
    };

    apiKeyFile = "/run/secrets/demon-cry-api-key";
    masterKeyFile = "/run/secrets/demon-cry-master-key";

    searx.enable = true;  # поднимет локальный SearXNG и укажет на него агента
  };

  # файл вида: SEARXNG_SECRET=<openssl rand -hex 32>
  services.searx.environmentFile = "/run/secrets/searx-env";
}

Ключи не попадают в nix store: сервис получает их через systemd LoadCredential и подставляет в config.json при старте.

Полный список опций, работа с sops-nix/agenix и dev-shell — в Nix / NixOS.

Использование

Swagger: http://localhost:8000/docs

Пример:

curl -X 'POST' \
  'http://localhost:8000/api/investigate' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer secret' \
  -H 'Content-Type: application/json' \
  -d '{"target": "кто такой fazzyt"}'

Документация

  • Конфигурация — настройка config.json, провайдеры
  • Docker — Docker Compose, сборка, запуск
  • Nix / NixOS — flake, NixOS-модуль, секреты, dev-shell
  • SearXNG — метапоисковик, настройка
  • Разработка — локальный запуск, добавление модулей

Контрибьюторы

Спасибо нашим контрибьюторам! ❤️

Лицензия

Mozilla Public License 2.0

About

Demon Cry - AI-powered OSINT engine

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages