Harness 0.1

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

Быстрый старт

Пять минут от исходников до первого ответа. Всё локально, кроме самой модели.

Собрать и запустить

Нужен Rust 1.87+. Демон и CLI — два процесса; для локальной модели подойдёт Ollama.

cargo build

# терминал 1: демон
cargo run -p harness-daemon

# терминал 2: один запрос
cargo run -p harness-cli -- -p "привет"

# интерактивно
cargo run -p harness-cli

Приложение

Tauri 2, универсальный бандл arm64 + x86_64. Локальный демон запускается из приложения, токены лежат в Keychain.

cd apps/desktop
cargo build --release

# бандл в dist/Harness.app
./scripts/package-desktop.sh --universal

Сервер

Статические musl-архивы не требуют Rust на машине. Установщик создаёт systemd-юнит и два токена: admin и read-only.

cargo zigbuild --release --workspace \
  --target x86_64-unknown-linux-musl
TARGET=x86_64-unknown-linux-musl ./scripts/package-server.sh

scp dist/harness-*-linux-x86_64-musl.tar.gz server:
ssh server ./install-server.sh --from-tarball \
  harness-*-linux-x86_64-musl.tar.gz

Конфиг

YAML рядом с данными. Секреты не пишутся в файл: указывается только имя переменной окружения.

provider: ollama
model: qwen3-coder:30b
base_url: http://localhost:11434/v1

limits:
  max_steps: 12
  max_tool_calls: 40
  turn_timeout_secs: 300

embeddings:
  model: nomic-embed-text
  base_url: http://localhost:11434/v1

schedules:
  - name: Утренняя сводка
    cron: "0 8 * * *"
    prompt: Собери сводку по проектам за сутки
    agent: scout
    delivery:
      kind: file
      path: /srv/harness/digest.md

Доступ

Демон без токена доверяет только loopback. Для удалённого сервера токен обязателен, TLS терминирует Caddy или туннель.

  • admin-токен: полный доступ, включая ходы и настройки
  • read-only: видит сессии и знания, но не пишет
  • секреты — в .env или Keychain, в конфиге только имена
  • аудит чувствительных RPC в ~/.harness/audit.log

Что читать дальше

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

Сайт статический: Astro собирает его в HTML без серверного рантайма.