| name | elephant-agent-personal-ai |
| description | Build and interact with Elephant Agent, a self-evolving personal AI that grows a Personal Model and manages long-running Paths |
| triggers | ["how do I set up elephant agent","use elephant agent to create a personal ai assistant","configure elephant personal model","create a path with elephant agent","interact with elephant agent cli","integrate elephant agent with my workflow","build a self-evolving ai agent with elephant","manage elephant agent skills and herd"] |
Elephant Agent Personal AI Skill
Skill by ara.so — AI Agent Skills collection.
Elephant Agent is a Personal-Model First Self Evolving AI Agent that starts from understanding the person, not the task. It builds a correctable Personal Model across four lenses (Identity, World, Pulse, Journey) and helps design living Paths for work, health, habits, learning, and other long-running directions.
What Elephant Agent Does
- Personal Model: Builds understanding of who you are (Identity), what surrounds you (World), what's alive right now (Pulse), and what your path has taught (Journey)
- Paths: Long-running arcs that break down into Steps with Checkpoints for human judgment
- Herd Management: Coordinates Mother elephant and baby elephants under one understanding
- Skills & Tools: Extensible system for browser, filesystem, MCP, and operator actions
- Multi-Surface: Native macOS app + CLI + Dashboard for different workflows
Installation
macOS Desktop App (Recommended)
curl -L -o elephant-agent.dmg https://github.com/agentic-in/elephant-agent/releases/latest/download/Elephant-Agent.dmg
open https://github.com/agentic-in/elephant-agent/releases/latest
CLI + Dashboard (Linux/Cloud/SSH)
curl -fsSL https://elephant.agentic-in.ai/install.sh | bash
git clone https://github.com/agentic-in/elephant-agent.git
cd elephant-agent
pip install -e .
Key CLI Commands
Initialization and Setup
elephant init
elephant status
elephant config set provider openai
elephant config set model gpt-4
elephant config set curiosity_effort medium
elephant config list
Daily Interaction
elephant wake
elephant ask "What should I focus on today?"
elephant model show
elephant model show --lens identity
elephant model show --lens world
elephant model show --lens pulse
elephant model show --lens journey
Paths Management
elephant paths list
elephant paths create "Launch new product feature"
elephant paths show <path-id>
elephant paths update <path-id> --status active
elephant paths archive <path-id>
Herd Management
elephant herd list
elephant herd spawn --role researcher --context "market analysis"
elephant herd show <agent-id>
elephant herd remove <agent-id>
Skills and Tools
elephant skills list
elephant skills enable filesystem
elephant skills disable browser
elephant skills info filesystem
Dashboard
elephant dashboard
elephant dashboard --no-open
elephant dashboard --port 8080
Configuration
Provider Configuration
elephant config set provider openai
export OPENAI_API_KEY=your-key-here
elephant config set provider anthropic
export ANTHROPIC_API_KEY=your-key-here
elephant config set provider ollama
elephant config set model llama2
Configuration File
Elephant Agent stores configuration in ~/.elephant/config.yaml:
provider: openai
model: gpt-4
curiosity_effort: medium
language: en
boundaries:
- respect_privacy
- ask_before_destructive
- explain_reasoning
posture: collaborative
Environment Variables
export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...
export DEEPSEEK_API_KEY=...
export ELEPHANT_HOME=~/.elephant
export ELEPHANT_LOG_LEVEL=info
export ELEPHANT_DASHBOARD_PORT=3000
Python API Usage
Basic Interaction
from elephant_agent import ElephantAgent, PersonalModel
agent = ElephantAgent(
provider="openai",
model="gpt-4",
curiosity_effort="medium"
)
model = agent.get_personal_model()
response = agent.ask("What should I prioritize today?")
print(response.message)
print(f"Confidence: {response.confidence}")
Working with Personal Model
from elephant_agent import PersonalModel
model = PersonalModel.load()
identity = model.get_lens("identity")
print(f"Values: {identity.values}")
print(f"Decision style: {identity.decision_style}")
model.update_lens("world", {
"people": ["Alice (mentor)", "Bob (colleague)"],
"projects": ["Product launch", "Team onboarding"],
"tools": ["VS Code", "Linear", "Slack"]
})
pulse = model.get_lens("pulse")
print(f"Current focus: {pulse.focus}")
print(f"Energy level: {pulse.energy}")
print(f"Constraints: {pulse.constraints}")
model.save()
Creating and Managing Paths
from elephant_agent import Path, Step
path = Path.create(
title="Launch API v2",
description="Ship new API with auth and webhooks",
context=model
)
path.add_step(Step(
title="Design API schema",
description="Define endpoints, auth flow, webhook events",
checkpoint=True
))
path.add_step(Step(
title="Implement core endpoints",
description="Build CRUD operations with auth",
checkpoint=False
))
path.start()
next_step = path.get_next_step()
print(f"Next: {next_step.title}")
path.complete_step(next_step.id)
path.save()
Working with the Herd
from elephant_agent import Herd, BabyElephant
herd = Herd.load()
researcher = BabyElephant(
role="researcher",
context={
"focus": "competitor analysis",
"constraints": ["public data only"],
"reporting_to": "mother"
}
)
herd.add(researcher)
task = researcher.assign_task(
"Research top 3 competitors' API offerings"
)
status = researcher.get_status()
print(f"Progress: {status.progress}%")
if task.is_complete():
results = task.get_results()
print(results.summary)
Skills Integration
from elephant_agent.skills import FileSystemSkill, BrowserSkill
fs_skill = FileSystemSkill(
allowed_paths=["/home/user/projects"],
readonly=False
)
browser_skill = BrowserSkill(
headless=True,
timeout=30
)
agent.register_skill(fs_skill)
agent.register_skill(browser_skill)
response = agent.ask(
"Read the README.md and create a summary document",
skills=["filesystem"]
)
Advanced: Custom Skills
from elephant_agent.skills import Skill, SkillParameter
class GitSkill(Skill):
name = "git"
description = "Execute git commands safely"
parameters = [
SkillParameter("command", str, "Git command to run"),
SkillParameter("args", list, "Command arguments", required=False)
]
def execute(self, command: str, args: list = None):
"""Execute git command with safety checks."""
import subprocess
safe_commands = ["status", "log", "diff", "branch"]
if command not in safe_commands:
return {
"success": False,
"error": f"Command '{command}' not allowed"
}
cmd = ["git", command] + (args or [])
result = subprocess.run(
cmd,
capture_output=True,
text=True
)
return {
"success": result.returncode == 0,
"output": result.stdout,
"error": result.stderr
}
git_skill = GitSkill()
agent.register_skill(git_skill)
Common Patterns
Daily Check-in Pattern
from elephant_agent import ElephantAgent
from datetime import datetime
agent = ElephantAgent.load()
def morning_checkin():
model = agent.get_personal_model()
model.update_pulse({
"timestamp": datetime.now(),
"energy": "high",
"focus": ["API launch", "team sync"],
"constraints": ["3hr meeting block 2-5pm"]
})
guidance = agent.ask(
"Given my current pulse and active paths, what should I prioritize today?"
)
return guidance
checkin = morning_checkin()
print(checkin.message)
Path Progress Review
from elephant_agent import Path
def review_active_paths():
paths = Path.list(status="active")
for path in paths:
print(f"\n=== {path.title} ===")
print(f"Progress: {path.progress}%")
next_step = path.get_next_step()
if next_step:
print(f"Next: {next_step.title}")
if next_step.checkpoint:
print("⚠️ Requires your review")
blockers = path.get_blockers()
if blockers:
print(f"Blockers: {', '.join(blockers)}")
Correcting the Personal Model
from elephant_agent import PersonalModel
model = PersonalModel.load()
correction = model.correct(
lens="identity",
field="values",
current="achievement, efficiency",
corrected="learning, collaboration, impact",
reason="I value learning and collaboration over pure efficiency"
)
print(f"Correction applied: {correction.applied}")
print(f"Impact: {correction.impact_summary}")
Integrating with Workflows
from elephant_agent import ElephantAgent
import json
agent = ElephantAgent.load()
def export_context_for_tool(tool_name: str):
model = agent.get_personal_model()
context = {
"current_focus": model.pulse.focus,
"active_projects": model.world.projects,
"constraints": model.pulse.constraints,
"tool": tool_name
}
return json.dumps(context, indent=2)
def import_learning(source: str, content: dict):
model = agent.get_personal_model()
model.add_journey_entry({
"source": source,
"lesson": content["lesson"],
"context": content["context"],
"timestamp": content["timestamp"]
})
Troubleshooting
Provider Connection Issues
elephant config test-provider
elephant config reset-provider
echo $OPENAI_API_KEY
elephant models list
Personal Model Not Loading
from elephant_agent import PersonalModel
PersonalModel.reset()
agent.init(force=True)
model = PersonalModel.load()
assert model.is_valid(), "Model structure invalid"
Dashboard Connection Issues
elephant dashboard status
elephant dashboard stop
elephant dashboard --port 8080
ssh -L 3000:localhost:3000 user@remote-host
Performance Optimization
from elephant_agent import ElephantAgent
agent = ElephantAgent(
cache_responses=True,
cache_ttl=300
)
agent.set_curiosity_effort("low")
agent.set_model("gpt-3.5-turbo")
questions = [
"What's my next step?",
"Any blockers?",
"Energy check?"
]
responses = agent.ask_batch(questions)
Debugging
export ELEPHANT_LOG_LEVEL=debug
elephant wake
tail -f ~/.elephant/logs/elephant.log
elephant debug state
elephant skills test filesystem
Resources