Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.
Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles
Excluded from snapshot: venv/, .env, data/, backups, .tgz archives
Co-authored-by: Cursor <cursoragent@cursor.com>
3.4 KiB
3.4 KiB
AgroMatrix Tools Stack (Stepan)
Quick start
make up
Demo telemetry ingest
make seed
CrewAI (Stepan only)
Перед запуском:
export PYTHONPATH="$PWD/packages/agromatrix-tools"
PYTHONPATH="$PWD/packages/agromatrix-tools" python3 crews/agromatrix_crew/run.py "Покажи останні спостереження по вологості ґрунту"
Spreadsheet demo
python3 scripts/demo_spreadsheet.py
Notes
- Запис у farmOS відбувається тільки через Integration Service.
- Під-агенти CrewAI не спілкуються з користувачем напряму.
Security (P0)
- Integration Service accepts writes only with HMAC headers (X-AGX-SIGNATURE, X-AGX-TIMESTAMP, X-AGX-NONCE).
- Configure AGX_HMAC_SECRET in env.
- farmOS write uses service account (FARMOS_USER/FARMOS_PASSWORD).
DLQ
- Failed writes go to DLQ (Redis stream or /data/dlq.jsonl).
- Replay:
make replay-dlq.
Audit limits
- AGX_AUDIT_MAX_BYTES=4096
- AGX_AUDIT_REDACT_KEYS=token,secret,password,authorization,cookie,api_key,signature
Trace testing
PYTHONPATH="$PWD/packages/agromatrix-tools" python3 crews/agromatrix_crew/run.py --trace trace-demo-001 "перевір trace"
farmOS UI (опційно, через reverse-proxy)
- Згенеруй bcrypt-хеш пароля:
docker run --rm caddy:2 caddy hash-password --plaintext 'your_password'
- Заповни env:
- FARMOS_UI_PORT=18080
- FARMOS_UI_USER=admin
- FARMOS_UI_PASS_HASH=
- Запусти профіль:
docker compose -f infra/compose/docker-compose.yml --profile farmos_ui up -d
Перевірка:
curl -I http://127.0.0.1:18080
# 401
curl -u admin:<pass> http://127.0.0.1:18080
Примітка: farmOS не має host-портів і залишається доступним тільки всередині docker network.
Dictionaries & Normalization
- Source of truth:
data/dictionaries/dictionaries.yaml - Pending terms:
data/dictionaries/pending.jsonl
Demo:
python3 scripts/demo_dictionary.py
Rules:
- If confidence < 0.85 or no match → pending record is written
- Use
tool_dictionarybefore planning or writing
OperationPlan Manager (P0)
- Data:
data/operations/operation_plans.jsonl - Schema:
crews/agromatrix_crew/operation_schema.json
Demo:
python3 scripts/demo_operation_plan.py
Dictionary Review Workflow (P0.5)
Pending review:
python3 scripts/dict_review.py list
python3 scripts/dict_review.py approve --ref pending.jsonl:1 --map-to crop_wheat_winter
python3 scripts/dict_review.py apply
Auto-approve (safe categories):
python3 scripts/dict_review.py auto-approve --min-score 0.97 --category unit --dry-run
Telegram-операторські команди (Pending Review)
ENV:
- AGX_OPERATOR_IDS=12345,67890
- AGX_OPERATOR_CHAT_ID=-100123456 (optional)
Команди:
- /pending
- /pending_show pending.jsonl:17
- /approve pending.jsonl:17 map_to crop_wheat_winter
- /reject pending.jsonl:17 "reason"
- /apply_dict
- /pending_stats
- /whoami
Operator flags
/pending --limit 20 /pending --category unit /pending --category operation --limit 50 /approve pending.jsonl:17 map_to crop_wheat_winter --apply
Note: --apply requires AGX_ALLOW_APPLY=1 or AGX_OPS_MODE=1