Demon Cry — это автономный OSINT-агент, который использует LLM для проведения расследований в открытых источниках. Агент сам строит гипотезы, выбирает инструменты и анализирует данные.
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Нажмите, чтобы открыть
Разовый запуск (нужен 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