Autonomous Hands

LibreFang's core innovation — pre-built autonomous capability packages that run independently, executing tasks via LLM agents without human intervention.


Overview

Hands are LibreFang's unique feature — they are autonomous agents that can:

  • Execute tasks automatically via LLM-powered agents
  • Handle complex multi-step workflows
  • Be configured through settings (provider, model, API keys)
  • Operate as single-agent or multi-agent systems

Built-in Hands

HandFunctionType
ClipYouTube video download, clipping, subtitle generationMulti-agent
LeadDaily lead discovery, enrichment, 0-100 scoring, deduplicationMulti-agent
CollectorOSINT intelligence collection, change detection, knowledge graphMulti-agent
PredictorSuperforecasting engine, confidence intervals, contrarian patternsSingle-agent
ResearcherDeep autonomous research, CRAAP credibility assessment, APA citationMulti-agent
TwitterAutonomous X/Twitter account management, content formats, approval queueMulti-agent
BrowserWeb automation via Playwright, mandatory purchase approval gateSingle-agent
AnalyticsBusiness analytics, KPI tracking, automated reportingMulti-agent
ApiTesterAutomated API testing, contract validation, regression detectionSingle-agent
DevOpsCI/CD monitoring, deployment automation, infrastructure alertsMulti-agent
LinkedInLinkedIn profile monitoring, outreach automationMulti-agent
RedditReddit community monitoring, post scheduling, sentiment trackingMulti-agent
StrategistStrategic analysis, competitive intelligence, scenario planningMulti-agent
TraderMarket data monitoring, signal generation, portfolio trackingMulti-agent

CLI Commands

Hand Management

# List all available hands
librefang hand list

# Show currently active hand instances
librefang hand active

# Show status for a specific hand
librefang hand status clip

# Show detailed info about a hand
librefang hand info clip

# Reload hand definitions from disk
librefang hand reload

Activation Lifecycle

# Activate a hand
librefang hand activate clip

# Pause a running hand
librefang hand pause clip

# Resume a paused hand
librefang hand resume clip

# Deactivate a hand
librefang hand deactivate clip

Configuration

# Show current settings for a hand
librefang hand settings clip

# Set a configuration value
librefang hand set clip stt_provider groq

Interaction

# Chat with an active hand interactively
librefang hand chat clip

Dependencies

# Check dependency status
librefang hand check-deps clip

# Install missing dependencies
librefang hand install-deps clip

Local Installation

# Install a hand from a local directory
librefang hand install ./my-hand

Hand Status

StatusDescription
ActiveRunning, agents spawned
PausedPaused, can be resumed
ErrorError occurred, intervention needed
InactiveNot activated

HAND.toml Format

Single-Agent Hand

id = "my-hand"
version = "1.0.0"
name = "My Hand"
description = "What this hand does"
category = "content"
icon = "M"
tools = ["shell_exec", "web_fetch"]

[[requires]]
key = "ffmpeg"
label = "FFmpeg must be installed"
requirement_type = "binary"
check_value = "ffmpeg"

[[settings]]
key = "quality"
label = "Output Quality"
setting_type = "select"
default = "high"

[[settings.options]]
value = "high"
label = "High (1080p)"

[[settings.options]]
value = "low"
label = "Low (480p)"

[agent]
name = "my-hand-agent"
description = "Processes tasks"
system_prompt = "You are a task processing agent."

[agent.model]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
max_tokens = 4096
temperature = 0.7

[dashboard]
metrics = []

[routing]
aliases = ["my-hand", "process"]
weak_aliases = ["task", "automate"]

Multi-Agent Hand

id = "research"
version = "2.0.0"
name = "Research Hand"
description = "Multi-agent research system"
category = "content"
tools = ["web_fetch"]

[agents.planner]
coordinator = true
invoke_hint = "Use planner for task decomposition"
name = "planner-agent"
description = "Plans research tasks"
model = "default"
system_prompt = "You plan and coordinate research tasks."

[agents.analyst]
name = "analyst-agent"
description = "Analyzes and synthesizes data"
provider = "groq"
model = "llama-3.3-70b-versatile"
system_prompt = "You analyze data and produce insights."

[dashboard]
metrics = []

Legacy Flat Format (Backward Compatible)

Single-agent hands can use flat fields instead of [agent.model]:

[agent]
name = "my-agent"
description = "Simple agent"
provider = "anthropic"
model = "claude-sonnet-4-20250514"
max_tokens = 4096
temperature = 0.7
system_prompt = "You are a helpful agent."

REST API Endpoints

Hand Discovery

EndpointMethodDescription
/api/handsGETList all registered hands with status
/api/hands/activeGETList currently active hand instances
/api/hands/{hand_id}GETGet details for a specific hand
/api/hands/{hand_id}/activatePOSTActivate a hand (spawns agents)
/api/hands/{hand_id}/check-depsPOSTCheck dependency availability
/api/hands/{hand_id}/install-depsPOSTInstall missing dependencies
/api/hands/reloadPOSTReload hand definitions from disk

Hand Configuration

EndpointMethodDescription
/api/hands/{hand_id}/settingsGETGet current hand configuration
/api/hands/{hand_id}/settingsPUTUpdate hand configuration

Instance Lifecycle

EndpointMethodDescription
/api/hands/instances/{id}/pausePOSTPause a running hand instance
/api/hands/instances/{id}/resumePOSTResume a paused hand instance
/api/hands/instances/{id}DELETEDeactivate and remove a hand instance
/api/hands/instances/{id}/messagePOSTSend a message to a hand instance

Example: Activate and Chat

# Activate
curl -X POST http://127.0.0.1:4545/api/hands/clip/activate

# Send a message
curl -X POST http://127.0.0.1:4545/api/hands/instances/<instance-id>/message \
  -H "Content-Type: application/json" \
  -d '{"message": "Download this video and generate subtitles"}'