WINDOWS · .NET 10 · AGPL-3.0

z3nDash

Расписания и запуск задач, узлы ZennoPoster, HTTP-архивы, снимки системы, просмотр JSON и SQLite, Web3-балансы — в одном дашборде. Встроенный сервер слушает только localhost: дашборд открывается с той машины, где запущен.

Требуется PostgreSQL и WebView2 Runtime. Оконная сборка — Windows 10 или 11, x64. Для сборки из исходников — .NET 10 SDK.

>_[ fig. 1 — tasker ]↗
01

Расписания без чужого раннера

python, node, ts-node, npm, exe, cmd, bat, bash, ps1 и внутренние задачи. Cron, запуск по требованию, политика перекрытий, payload, живой вывод процесса.

02

Узлы ZennoPoster в локальной сети

Состояние воркеров, очередь задач, остановка и перезапуск — со всех машин сразу, из одной таблицы. Оттуда же открываются общая история логов и окно HTTP-трафика.

03

Инструменты под рукой

HAR-архивы с повтором запросов, JSON, текстовые преобразования, клипборд-шаблоны, граф C#-кода из DLL, просмотр SQLite и снимки состояния Windows.

04

Документация внутри приложения

Тот же vault, что и на этом сайте. Alt+H — и он открыт, без интернета и без лишних вкладок.

// ПЕРВЫЙ ЗАПУСК
✓
Запускбез прав администратора

Префикс localhost не требует ни резервирования адреса, ни запуска от имени администратора.

✓
PostgreSQLстрока подключения

Схема берётся из Search Path. Нужные таблицы создаются сами при первом запуске.

ZennoBrowserпо желанию

Профили и процессы появятся на странице ZB.

OmniRouteпо желанию

Включает функции с участием ИИ.

Панели

У каждой свой хоткей. Навигационный док показывает их постоянно.

Tasker

Alt+1

Tasker — страница /tasker.html для хранения расписаний и запуска локальных задач.

Список
Задачи читаются из таблицы schedules. В списке отображаются имя, состояние и основные параметры запуска.
Редактирование
Для задачи задаются: Имя, executor, путь к скрипту, файлу или задаче, аргументы, состояние enabled, расписание, политика overlap, payload. Поддерживаемые executor: python, node, ts-node, npm — скрипты соответствующих сред; exe, cmd, bat, bash, ps1 — исполняемые файлы и командные сценарии; csx — C#-скрипт; csx-internal — C#-скрипт с доступом к внутренностям z3nDash; в списке задач для него есть кнопка сборки; xml — шаблон ZennoPoster: граф из XML проигрывает встроенный рантайм, браузер выбирается в карточке задачи; internal — встроенная задача z3nDash.
Расписание
UI умеет формировать: Запуск по требованию, ежедневный запуск, запуск по дням недели, запуск по дню месяца, интервал в минутах. Итоговые значения сохраняются в cron, interval_minutes и fixed_time.
Overlap
Skip — не запускать новый экземпляр, пока активен предыдущий, parallel — разрешить несколько экземпляров до max_threads, kill_restart — остановить активные экземпляры и запустить новый.
Управление
Доступны: Run, Stop, Restart, включение/отключение расписания, удаление и дублирование, открытие файла и каталога, открытие терминала, проверка/установка зависимостей Python и Node.
Output
Вывод активного запуска передаётся через SSE. Для нескольких параллельных экземпляров доступны отдельные runId.
Traffic
Вкладка задачи с трафиком из trafficLog.jsonl: GET /traffic?tail=N&task_id=..., опрос раз в 3 секунды. Пишет его ZpRuntime, подробности — в Traffic. Файл ротируется сам.
Payload
Payload состоит из schema и values. Его можно редактировать, импортировать, экспортировать и передавать executor при запуске.
>_[ fig. tasker ]↗
Полная документация страницы →

ZP7

Alt+2

ZP7 показывает состояние задач, полученное напрямую от зарегистрированных ZP node-сервисов.

Источник данных
z3nDash хранит только адреса узлов в таблице zp_nodes. Состояние задач запрашивается у каждого узла: Страница получает адреса через GET /zp/nodes?probe=false, затем независимо опрашивает каждый узел через GET /zp/state?machine=... каждые 3 секунды. Задачи отображаются по мере поступления ответов: медленный или недоступный узел не задерживает загрузку и обновление остальных. Одновременно выполняется не более одного запроса состояния на узел; таймаут обращения к node — 10 секунд.
Список задач
Доступны фильтры: Имя, состояние, режим работы, теги. Выбранные фильтры сохраняются в состоянии UI.
Управление
Команды отправляются непосредственно выбранному node: Поддерживаемые действия интерфейса: Start, stop, interrupt, apply/update settings, add/set tries, set threads, clear done, clear fails, execution settings, scheduler settings.
Панели
Task Detail — параметры и действия выбранной задачи, Logs — логи выбранной задачи с её узла (GET /zp/log), allLogs — модальное окно общей истории со всех узлов, с фильтрами и сортировкой, traffic — модальное окно HTTP-трафика со всех узлов и самого z3nDash, HTTP — трафик выбранной задачи: GET /zp/traffic?machine=...&task_id=..., опрос раз в 3 секунды, Projects heatmap — данные проектов из report API.
Input Settings
⚙ Input Settings открывает переменные проекта. Значения приходят с узла как GET /zp/task/settings?machine=&task_id= — пара base64: исходный XML InputSettings и текущие значения. Два вида, переключаются кнопкой в подвале окна: Form (по умолчанию) — виджеты по типам из XML:. Tab — вкладка; Comment — разделитель секции; Label — подпись без поля ввода; Boolean — чекбокс; Number — числовой ввод; DropDown, Select — выпадающий список; DropDownMultiSelect — набор чекбоксов; Password — скрытый ввод; остальные (Text, FileName, CaptchaModules, …) — текстовое поле,…
>_[ fig. zp7 ]↗
Полная документация страницы →

ZB

Alt+3

ZB отображает данные внешнего ZennoBoxer API.

Подключение
Адрес берётся из ApiConfig.ZbHost. Если он пуст, используется: Токен передаётся upstream-сервису заголовком Api-Token.
Данные
Интерфейс запрашивает через proxy данные ZB, включая профили, proxy, instances и threads. Набор полей зависит от ответа внешнего API.
Локальные операции
Получение uptime процессов по PID, завершение процесса целиком по PID.
>_[ fig. zb ]↗
Полная документация страницы →

HAR

Страница HAR — просмотр HTTP-архивов в формате HAR и повтор запросов из них.

Источник данных
Файл открывается локально: страница читает log.entries и разбирает его в браузере. Серверных маршрутов у самой страницы нет. Записи можно добавить и импортом cURL — без файла.
Хранилище
Загруженный архив сохраняется в IndexedDB и переживает перезагрузку страницы. Clear HAR очищает и список, и сохранённую копию. В базу z3nDash записи HAR не попадают.
Список
Доступны фильтры по: Методу, статусу, URL, проекту. Отдельно задаётся предел числа показываемых записей. Refresh переприменяет фильтры к уже загруженным данным и в сеть не ходит. Reset сбрасывает фильтры.
Replay
Выбранный запрос отправляется через тот же replay listener, что и в окне Traffic — POST /http-replay. Метод и URL перед отправкой можно изменить, ответ доступен для копирования.
Код
Для выбранной записи формируются заготовки: API Skeleton, API Example, HttpClient, ZP7, Hybrid, Python, TypeScript, cURL.
>_[ fig. har ]↗
Полная документация страницы →

JSON

Alt+6

JSON — локальный просмотрщик и редактор JSON.

Работа с документом
Вставка JSON, форматирование, дерево значений, поиск, сворачивание веток, копирование значения или пути, фильтрация полей.
Security Badges
Интерфейс отмечает значения, похожие на секреты или чувствительные данные. Это эвристическая подсветка, а не проверка безопасности.
Replay
JSON можно использовать как body при подготовке HTTP replay.
AI-анализ
Опциональный анализ отправляется в OmniRoute. Кэш хранится в таблице ai_json_cache. API: POST /json-analyzer/ai-analyze, GET /json-analyzer/ai-cache, DELETE /json-analyzer/ai-cache, GET /config/ai-models.
>_[ fig. json ]↗
Полная документация страницы →

Text

Alt+7

Страница Text содержит локальные преобразования текста.

Инструменты
URL encode/decode, Base64 encode/decode, экранирование C#-строки, экранирование JSON-строки. Операции выполняются в браузере и не требуют базы данных.
>_[ fig. text ]↗
Полная документация страницы →

Clips

Alt+C

Clips хранит именованные текстовые шаблоны для быстрого копирования.

Возможности
Просмотр дерева шаблонов, выбор и копирование содержимого, создание и редактирование, сохранение пути, заголовка и текста.
Хранилище
Данные находятся в таблице clips.
>_[ fig. clips ]↗
Полная документация страницы →

sql

Alt+-

SQLite — отдельный просмотрщик выбранного SQLite-файла.

Возможности
Открыть файл базы, получить список таблиц, выполнить запрос, изменить значение, удалить строку. Этот экран не переключает основную БД z3nDash и работает с файлом, переданным в запросе viewer API.
>_[ fig. sql ]↗
Полная документация страницы →

Treasury

Alt+8

Treasury собирает и показывает Web3-балансы для адресов из таблицы addresses.

Обновление
POST /treasury/update запускает фоновое обновление. Параметры: MaxId, minValue, concurrency от 1 до 20. Текущее состояние доступно через GET /treasury/status.
Представление
Страница показывает: Общую стоимость, balances по аккаунтам и chains, top tokens, распределение по chains, сводку портфеля. Набор chains определяется колонками фактической таблицы _treasury.
AI
Анализ портфеля использует OmniRoute. Результат хранится в AI-кэше Treasury.
>_[ fig. treasury ]↗
Полная документация страницы →

System

Alt+S

System Snapshot собирает диагностический снимок текущей Windows-системы.

Обновление
При открытии страницы сбор запускается автоматически на машине, где работает z3nDash. Кнопка Refresh повторно собирает актуальные данные. Страница включает секции, которые фактически смог собрать backend: процессы, сеть и системные данные. Данные страницы находятся только в памяти. Сохранение снимков в БД, история и загрузка из файлов убраны.
AI Audit
Опциональный аудит отправляет текущие данные страницы в OmniRoute. Кэш хранится в system_snapshot_ai_cache; старый отчёт при открытии страницы автоматически не загружается.
>_[ fig. system ]↗
Полная документация страницы →

Config

Alt+0

Страница /config.html управляет локальной конфигурацией z3nDash.

Server Status
Показывает: Состояние конфигурации, подключение к базе, dashboard port, каталоги логов и отчётов, выбранный режим БД. Данные загружаются через GET /config/status.
Database
Поддерживаются два режима: PostgreSQL — одно поле connection string, SQLite — путь к файлу. Для PostgreSQL схема берётся из Search Path. Connection string можно скопировать кнопкой рядом с полем.
Logs & Server
Настраиваются порт панели и рабочие каталоги. Сервер слушает только localhost. Менять это не следует: маршруты не требуют аутентификации и позволяют запускать процессы и читать секреты.
OmniRoute
OmniRoute — единственный AI-провайдер. Поле содержит URL сервиса, по умолчанию http://localhost:20128. Validate & Save AI сохраняет адрес и проверяет доступность /v1/models. Результат показывается toast-уведомлением.
Security
Раздел jVars сохраняет зашифрованные локальные переменные и путь к файлу jVars.
Memory Watchdog
Настраиваются: Имя корневого процесса, включение watchdog, лимит памяти в MB, интервал проверки. Watchdog считает память корневого процесса и его дочернего дерева. При превышении ненулевого лимита дерево процессов завершается.
Storage
Показывает размер и количество файлов в каталоге логов — вместе с trafficLog.jsonl и его ротированными копиями. Очистка одна — POST /clear-all-logs, весь каталог целиком. Отдельных кнопок для логов и трафика нет.
Import
Доступны только: Proxy, EVM addresses, SOL addresses. Используются POST /import/proxy и POST /import/addresses.
>_[ fig. config ]↗
Полная документация страницы →

docsVault

Alt+H

docsVault визуализирует Markdown-файлы текущего docs-vault.

Генерация
POST /docsVault/generate?vaultPath=... читает Markdown-файлы и строит связи по wiki-ссылкам. Относительный путь вычисляется от каталога приложения.
Просмотр
GET /docsVault возвращает последний граф и выбранную папку. До первой генерации открывается пустой шаблон.
Export
GET /docsVault/export скачивает автономный HTML последнего построенного графа.
>_[ fig. docsvault ]↗
Полная документация страницы →

dllGraph

Alt+G

dllGraph строит граф C#-кода из исходников или DLL.

Вход
POST /dllGraph/generate?repoPath=... принимает: Путь к одной DLL, каталог с DLL, каталог с C#-исходниками. Каталоги bin и obj при анализе исходников исключаются.
Результат
Сгенерированный HTML хранится в памяти процесса. GET /dllGraph возвращает последний построенный граф. После перезапуска z3nDash граф нужно построить заново.
>_[ fig. dllgraph ]↗
Полная документация страницы →

Скачать

Windows 10 / 11 x64. Установщик не подписан — SmartScreen покажет предупреждение.

Установщик
Ярлыки, обновление поверх предыдущей версии.
Файл появится с первым релизом.
Портативная сборка
Self-contained win-x64. Ставить .NET не нужно.
Файл появится с первым релизом.
Исходники
AGPL-3.0. .NET 10 SDK 10.0.103, сборка одной командой.
Открыть github