Files
agentik/standalone
subochev 0fdc12695e
ci / JVM build + tests (push) Failing after 1m57s
docs: per-module README + root navigation hub + CI/release workflows
- README.md в каждом подмодуле: для библиотек — описание проблемы,
  подключение через maven-central/caffeine, версии в gradle/libs.versions.toml.
  Для запускаемых модулей — команды запуска + переменные среды с дефолтами.
- Корневой README.md переписан как навигационный хаб: что это, где клиенты,
  где серверы, как собрать, как опубликовать.
- build.gradle.kts: per-module POM-description через единую карту в rootProject.extra
  (порядок важен — нужно ДО apply плагина KMP, поэтому beforeEvaluate в subprojects).
- .gitea/workflows/ci.yml (новый): build + jvmTest + shadowJar на PR/push main.
- .gitea/workflows/release.yml (обновлён): публикует библиотеки в caffeine
  Nexus + собирает 3 fatjar'а и крепит их к release как бинарные ассеты.
2026-09-16 16:24:03 +03:00
..

:standalone — agentik single-jar server

Self-contained HTTP-сервер на Ktor: AG-UI / A2A / :proto транспорты на одном порту, встроенный SQLite для истории диалогов, долговременная память (Hermes-style §-файлы или vector+JVector), загрузка MCP-инструментов, навыков (SKILL.md) и персоны (SOUL.md).

Сборка

# Полная сборка всего проекта + fatjar
./gradlew assemble

# Только fatjar :standalone (≈ 250 MB)
./gradlew :standalone:shadowJar

# Результат:
# standalone/build/libs/standalone-all.jar

Также публикуется в Nexus (caffeine репо) при создании релиза: pw.binom.agentik:standalone:VERSION с classifier all (см. https://git.binom.pw/subochev/agentik/releases).

Запуск

java -jar standalone/build/libs/standalone-all.jar

По умолчанию слушает на http://localhost:8080. Healthcheck: GET /health.

Транспорты на одном порту:

  • GET /health — liveness
  • POST /agentik/conversations — создать беседу
  • GET /agentik/conversations/{id}/events — SSE-стрим ответов
  • POST /a2a/ — A2A JSON-RPC (message/send, tasks/get, tasks/cancel)
  • GET /a2a/.well-known/agent-card.json — AgentCard
  • POST /agui — AG-UI (compatibility transport, legacy)

Подкоманды

# Скачать модель Google LiteRT-LM в AGENTIK_GOOGLE_MODEL_PATH.
# Требует AGENTIK_LLM_BACKEND=google. Если файл уже есть — no-op.
java -jar standalone-all.jar pull-model

# Сервер (по умолчанию)
java -jar standalone-all.jar

Переменные окружения

Все переменные читаются AgentikConfig.fromEnv(). Пусто или отсутствие → дефолт.

Переменная Дефолт Назначение
AGENTIK_PORT 8080 Порт HTTP-сервера
AGENTIK_DB_PATH ./agentik.db Путь к SQLite (история бесед + метаданные памяти)
AGENTIK_SKILLS_DIR выкл. Каталог со скилами (SKILL.md / *.yaml)
AGENTIK_MEMORY_DIR ~/.agentik/memory (md) или AGENTIK_DB_PATH (vector) Каталог памяти (md); "off" отключает
AGENTIK_MEMORY_BACKEND md md (Hermes-style §-файлы) / vector (SQLite + JVector + LLM-эмбеддинги) / off
AGENTIK_EMBEDDING_MODEL text-embedding-3-small Модель эмбеддингов для vector-бэкенда (только HTTP)
AGENTIK_EMBEDDING_DIMENSION 1536 Размерность вектора (только HTTP; SIGLIP определяет автоматически)
AGENTIK_EMBEDDING_BACKEND HTTP HTTP (POST /v1/embeddings) или SIGLIP (on-device, без сети)
AGENTIK_EMBEDDING_MODEL_PATH только SIGLIP Путь к text_model_int8.onnx (SigLIP2)
AGENTIK_EMBEDDING_TOKENIZER_PATH только SIGLIP Путь к tokenizer.model (sentencepiece)
AGENTIK_SOUL выкл. Путь к SOUL.md — файл персоны (markdown), вставляется в начало system prompt
AGENTIK_LLM_BACKEND — openai или google (см. ниже)
AGENTIK_MCP_CONFIG выкл. Путь к JSON со списком MCP-серверов
AGENTIK_SYSTEM_PROMPT be brief Базовый system prompt
OPENAI_CONTEXT_WINDOW выкл. Лимит контекстного окна в токенах (для compaction'а)
AGENTIK_GOOGLE_CONTEXT_WINDOW выкл. То же для Google backend
AGENTIK_COMPRESSION_THRESHOLD 0.8 Доля лимита, при которой запускается compaction
AGENTIK_REFLECTION_INTERVAL 10 Self-reflection: каждый N-й пользовательский ход агент оценивает себя (LiteLlm) и сохраняет рефлексию. 0 = выключено.
AGENTIK_REFLECTION_TOP_K 3 Сколько последних рефлексий подмешивать в system prompt как «слабые места». 0 = не подмешивать.
AGENTIK_SKILL_MINING_INTERVAL 15 Skill mining: через сколько user-ходов запускать фоновый прогон SkillMiner. 0 = выключено.
AGENTIK_SKILL_MINING_MAX_TURNS 30 Сколько последних ходов передавать SkillMiner'у за один прогон.
AGENTIK_DEBUG_ENDPOINTS 0 1 включает debug-эндпоинты (/debug/reflect, /debug/skill-mine, /debug/curate, /debug/compact, /debug/tokens)
AGENTIK_AUTO_DOWNLOAD_MODEL 0 1 — при старте скачать LiteRT-LM модель в AGENTIK_GOOGLE_MODEL_PATH если её там нет (через pull-model логику).

OpenAI backend

Переменная Обязательна Назначение
OPENAI_BASE_URL да Например, https://api.openai.com/v1
OPENAI_API_KEY да API key
OPENAI_MODEL да Имя модели (gpt-4o-mini и т.п.)

Google backend

Переменная Обязательна Назначение
AGENTIK_GOOGLE_MODEL_PATH да Путь к .litertlm файлу
AGENTIK_GOOGLE_MODEL_URL нет URL для скачивания (default: https://static.binom.pw/models/gemma-4-E2B-it.litertlm)
AGENTIK_GOOGLE_MODEL_SHA256_URL нет URL с эталонным SHA-256 (если задано — файл проверяется)

Полный пример запуска

export AGENTIK_PORT=8080
export AGENTIK_DB_PATH=/var/lib/agentik/state.db
export AGENTIK_MEMORY_DIR=/var/lib/agentik/memory
export AGENTIK_SOUL=/etc/agentik/SOUL.md
export AGENTIK_SKILLS_DIR=/etc/agentik/skills
export AGENTIK_MCP_CONFIG=/etc/agentik/mcp.json

export AGENTIK_LLM_BACKEND=openai
export OPENAI_BASE_URL=https://api.openai.com/v1
export OPENAI_API_KEY=sk-…
export OPENAI_MODEL=gpt-4o-mini

mkdir -p "$(dirname "$AGENTIK_DB_PATH")" \
         "$AGENTIK_MEMORY_DIR" \
         "$(dirname "$AGENTIK_SOUL")" \
         "$(dirname "$AGENTIK_MCP_CONFIG")"

java -jar standalone/build/libs/standalone-all.jar

На старте выведет что-то вроде:

agentik standalone listening on http://localhost:8080
  GET  /health
  POST /agentik/conversations                              -> 201
  GET  /agentik/conversations/{id}/events                  -> SSE
  storage: /var/lib/agentik/state.db
  llm: OPENAI gpt-4o-mini @ https://api.openai.com/v1
  mcp: 4 tools from 2 servers
  skills: 3 loaded from /etc/agentik/skills
  soul: /etc/agentik/SOUL.md (842 chars)
  memory: /var/lib/agentik/memory (md-backend)
  compaction: enabled, threshold=0.8, window=128000 tokens
  curator: enabled (interval=1d, maxAge=90d)
  reflection: enabled (interval=10, topK=3)

Остановка

Ctrl-C → срабатывает shutdown hook: агент, MCP-серверы, SQLite-стора и LLM-клиент закрываются корректно (SQLite фиксирует WAL, MCP-процессы получают SIGTERM).

Клиенты к :standalone

  • :agentik-cli — REPL со slash-командами (/new, /list, /interrupt …).
  • :agentik-tui — Compose-style TUI, чисто клавиатурная навигация.

Тесты

./gradlew :standalone:jvmTest