Files
automaton/scripts/install.sh
T
gitea 79b783864e Harden framework: tests, VRAM Python, dashboard spec, security, CI
- Rewrite vram_detect in Python with fixed config parsing and 10KB read limit

- Add pytest suite (72 tests) covering dashboard core, app security, and VRAM

- Standardize all prompts to .automaton/tasks/{task-name}/ path

- Reconcile dashboard spec with web implementation; remove themes.py

- Remove half-implemented refresh.py file watcher

- Harden dashboard static-file serving and task-name validation

- Add uncommitted-change guard to update.sh and real Gitea URLs

- Add AGENTS.md, Gitea CI workflow, and template documentation
2026-06-14 11:24:36 -04:00

62 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
set -e
FRAMEWORK_DIR="$HOME/.automaton"
if [ -d "$FRAMEWORK_DIR" ]; then
echo "automaton already installed at $FRAMEWORK_DIR"
echo "Run './update.sh' to update."
exit 0
fi
echo "Cloning automaton to $FRAMEWORK_DIR..."
git clone http://10.37.0.86:3003/hermes/automaton "$FRAMEWORK_DIR"
echo ""
echo "=== VRAM / Context Detection ==="
echo "Detecting your system's VRAM to recommend task decomposition settings..."
echo ""
# Run VRAM detection script if it exists
if [ -f "$FRAMEWORK_DIR/scripts/vram_detect.py" ]; then
# Run in project-dir context so it can read framework overhead
detection_output=$(cd "$FRAMEWORK_DIR" && python3 "$FRAMEWORK_DIR/scripts/vram_detect.py" 2>&1)
# Extract JSON output (the block after "=== JSON Output ===")
json_output=$(echo "$detection_output" | sed -n '/=== JSON Output ===/,$p' | tail -n +2)
if [ -n "$json_output" ]; then
echo "$detection_output"
# Extract key values from JSON using Python
recommended_k=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["recommended_k"])')
max_peak_kb=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["max_peak_context_kb"])')
headroom=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["headroom"])')
gpu_vram=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["gpu_vram_gb"])')
ram_gb=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["ram_gb"])')
model_context=$(echo "$json_output" | python3 -c 'import json,sys; print(json.load(sys.stdin)["model_context_kb"])')
echo ""
echo "=== Recommended VRAM Configuration ==="
echo "For low-VRAM systems (8GB, 16GB VRAM), add this to ~/.automaton/config.md:"
echo ""
echo "## VRAM Configuration"
echo "- **Auto-detect**: Yes # Let the agent detect automatically"
echo "- **Target context**: ${recommended_k}k tokens # Override auto-detect if needed"
echo "- **Headroom**: ${headroom}%"
echo "- **Max peak context per sub-task**: $((max_peak_kb / 1000))k tokens"
echo ""
echo "This ensures tasks are decomposed into sub-tasks that fit within your"
echo "available VRAM. For more information, see the README."
else
echo "Could not detect VRAM. You can manually set your VRAM configuration in ~/.automaton/config.md."
echo "See the README for details."
fi
else
echo "VRAM detection script not found. You can manually set your VRAM configuration in ~/.automaton/config.md."
echo "See the README for details."
fi
echo ""
echo "Installation complete."
echo "Next step: cd into a project and run the onboarding prompt."