Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (epsimo-cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Epsimo Agent Framework
Beta Release โ Build sophisticated AI-powered applications with agents, persistent threads, and Virtual Database state management.
The Epsimo Agent Framework provides a unified CLI, Python SDK, and React UI Kit for building AI applications with:
- ๐ค Multi-agent orchestration
- ๐พ Virtual Database (thread-based persistent state)
- ๐ฌ Streaming conversations with tool support
- ๐จ Pre-built React components
- ๐ Extensible tool library
Base URL: https://api.epsimoagents.com
Frontend: https://app.epsimoagents.com
๐ฆ Installation
For AI Coding Agents (Recommended)
Install as a skill for Claude Code, Cursor, Cline, Windsurf, and 30+ other AI coding agents:
npx skills add thierryteisseire/epsimo-agentThis installs the skill across all your AI agents in one command! The skill helps agents:
- Set up Epsimo projects quickly
- Manage agents and threads
- Query the Virtual Database
- Deploy configurations
- Handle authentication flows
npm Package (Global Installation)
npm install -g epsimo-cliPython SDK & CLI
# Install from PyPI (coming soon)
pip install epsimo-agent
# Or install from source
git clone https://github.com/thierryteisseire/epsimo-cli.git
cd epsimo-cli
pip install -r requirements.txt
# Make CLI executable
chmod +x epsimo/cli.py
export PATH="$PATH:$(pwd)/epsimo"๐ Quick Start
1. Authentication
# Login to Epsimo
epsimo auth login
# Check who you're logged in as
epsimo whoami
# Check thread/credit balance
epsimo credits balance2. Create Your First Project
# Create a new Next.js project with Epsimo
epsimo create "My AI App"
# Or initialize in existing directory
cd my-existing-project
epsimo init3. Deploy Configuration
# Sync your epsimo.yaml to the platform
epsimo deploy๐ ๏ธ CLI Reference
Authentication Commands
epsimo auth login # Interactive login
epsimo whoami # Display current user infoProject Management
epsimo projects # List all projects
epsimo create <name> # Scaffold a new Next.js app
epsimo init # Initialize existing directory
epsimo deploy # Deploy epsimo.yaml configurationVirtual Database
epsimo db query --project-id <P_ID> --thread-id <T_ID>
epsimo db set --project-id <P_ID> --thread-id <T_ID> --key <K> --value <V>
epsimo db get --project-id <P_ID> --thread-id <T_ID> --key <K>Credits & Billing
epsimo credits balance # Check thread balance
epsimo credits buy --quantity <N> # Generate Stripe checkout URLResource Listing
epsimo assistants --project-id <P_ID> # List assistants
epsimo threads --project-id <P_ID> # List threads๐ Python SDK
Installation
from epsimo import EpsimoClient
# Initialize with API key (JWT token)
client = EpsimoClient(api_key="your-token-here")
# Or use environment variable
# export EPSIMO_API_KEY=your-token-here
client = EpsimoClient()Virtual Database Access
# Get all structured data from a thread
db_state = client.db.get_all(project_id, thread_id)
# Get specific key
user_prefs = client.db.get(project_id, thread_id, "user_preferences")
print(f"Theme: {user_prefs.get('theme')}")
# Set value (for seeding/testing)
client.db.set(project_id, thread_id, "status", "active")Streaming Conversations
# Stream assistant responses
for chunk in client.threads.run_stream(
project_id,
thread_id,
assistant_id,
"Hello, how can you help me?"
):
print(chunk, end="", flush=True)Managing Resources
# Projects
projects = client.projects.list()
project = client.projects.create(name="My Project", description="...")
project_details = client.projects.get(project_id)
# Assistants
assistants = client.assistants.list(project_id)
assistant = client.assistants.create(project_id, config={...})
# Threads
threads = client.threads.list(project_id)
thread = client.threads.create(project_id, assistant_id=assistant_id)
# Files
files = client.files.list(project_id, assistant_id)
file = client.files.upload(project_id, assistant_id, file_path="document.pdf")
# Credits
balance = client.credits.get_balance()
checkout_url = client.credits.create_checkout_session(quantity=1000, amount=100.0)๐จ React UI Kit
ThreadChat Component
import { ThreadChat } from "@/components/epsimo";
export default function App() {
return (
<ThreadChat
assistantId="your-assistant-id"
projectId="your-project-id"
placeholder="Ask me anything..."
/>
);
}useChat Hook (Headless)
import { useChat } from "@/hooks/epsimo";
export default function CustomChat() {
const { messages, sendMessage, isLoading } = useChat({
projectId: "...",
threadId: "...",
assistantId: "..."
});
return (
<div>
{messages.map(msg => (
<div key={msg.id}>{msg.content}</div>
))}
<button onClick={() => sendMessage("Hello")} disabled={isLoading}>
Send
</button>
</div>
);
}๐งช Tool Library
The framework includes reusable tool schemas in epsimo/tools/library.yaml:
Available Tools
| Tool | Type | Description |
|---|---|---|
| database_sync | function | Persist structured JSON to thread state (Virtual DB) |
| web_search_tavily | search_tavily | Advanced web search with source attribution |
| web_search_ddg | ddg_search | Fast DuckDuckGo search for simple queries |
| retrieval_optimized | retrieval | High-accuracy document search in uploaded files |
| task_management | function | Track and update user tasks |
Using Tools in Assistants
# epsimo.yaml
assistants:
- name: "Research Assistant"
model: "gpt-4o"
instructions: "You help with research tasks"
tools:
- type: search_tavily
max_results: 5
- type: function
name: update_database
description: "Save research findings"
parameters:
type: object
properties:
key: { type: string }
value: { type: object }๐พ Virtual Database Pattern
Threads serve as persistent, structured storage โ eliminating the need for a separate database.
How It Works
- Agent writes to DB using the
update_databasetool - Data persists in thread state
- Query from SDK or CLI:
# Python SDK
preferences = client.db.get(project_id, thread_id, "user_preferences")
# CLI
epsimo db query --project-id P123 --thread-id T456Benefits
- โ Zero database configuration
- โ Data naturally partitioned by conversation
- โ Agent always "knows" what's in its DB
- โ Queryable from both agent and application code
See docs/virtual_db_guide.md for detailed guide.
๐ Authentication & Security
Environment Variables
# .env file (never commit!)
EPSIMO_API_KEY=your-jwt-token-here
EPSIMO_EMAIL=your@email.com
EPSIMO_PASSWORD=your-password # Only for automated scriptsToken Management
from epsimo.auth import get_token, perform_login
# Login programmatically
token = perform_login("your@email.com", "password")
# Get cached token (auto-refreshes if expired)
token = get_token()Token Storage: Tokens are stored in ~/.epsimo_token (configurable via TOKEN_FILE in auth.py)
Security Best Practices:
- Never commit
.epsimo_tokenor.envfiles - Use environment variables in production
- Rotate tokens regularly
- Use project-specific tokens for multi-tenant apps
๐ API Reference
See references/api_reference.md for comprehensive endpoint documentation including:
- Authentication flows
- Request/response schemas
- HTTP status codes
- Error handling patterns
- Rate limits
๐งช Verification & Testing
# Verify skill is correctly configured
python3 verify_skill.py
# Run E2E test suite
python3 scripts/test_all_skills.py
# Test streaming functionality
python3 scripts/test_streaming.py
# Test Virtual DB
python3 scripts/test_vdb.py๐ Project Structure
epsimo-cli/
โโโ epsimo/
โ โโโ cli.py # Unified CLI
โ โโโ client.py # Main SDK client
โ โโโ auth.py # Authentication logic
โ โโโ resources/ # Resource-specific clients
โ โ โโโ projects.py
โ โ โโโ assistants.py
โ โ โโโ threads.py
โ โ โโโ files.py
โ โ โโโ credits.py
โ โ โโโ db.py
โ โโโ tools/
โ โ โโโ library.yaml # Reusable tool schemas
โ โโโ templates/ # Project scaffolding templates
โโโ scripts/ # Helper scripts and examples
โโโ docs/ # Additional documentation
โโโ references/ # API reference docs
โโโ SKILL.md # Main skill documentation
โโโ README.md # This file๐ค Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
๐ License
MIT License - see LICENSE for details.
๐ Links
Installation & Discovery
- skills.sh: Search for "epsimo-agent" at https://skills.sh
- npm Package: https://www.npmjs.com/package/epsimo-cli
- Install Command:
npx skills add thierryteisseire/epsimo-agent
Documentation
- Skill Guide: SKILL.md
- API Reference: references/api_reference.md
- Virtual DB Guide: docs/virtual_db_guide.md
Platform
- GitHub Repository: https://github.com/thierryteisseire/epsimo-cli
- Epsimo Web App: https://app.epsimoagents.com
- API Endpoint: https://api.epsimoagents.com
Questions? Open an issue on GitHub or check the API Reference.