Warning
This project is archived and no longer maintained.
S3pia will not receive updates, bug fixes, or security patches. If you are looking for an actively developed alternative, use Hermes Agent instead.
S3pia is a self-contained AI assistant that runs in one Docker container. It chats through Telegram, uses OpenRouter for AI, and keeps its state in a persistent workspace.
curl -fsSL https://raw.githubusercontent.com/marcelrsoub/s3pia/main/install.sh | bashThen open http://localhost:3210 to edit config and check Telegram status.
- Telegram-only interaction
- Persistent memory, skills, tasks, and generated pages
- Background execution for code changes and other work
- Built-in and custom skills
- A browser UI for config and status
- Docker
- An OpenRouter API key
OpenRouter is the only supported LLM backend.
Set these values in /app/ws/config/.env:
OPENROUTER_API_KEY=your_key_here
AI_MODEL=anthropic/claude-sonnet-4Telegram is the only user-facing channel. Messages can trigger background work, and results come back as follow-up messages. Telegram updates support simple markdown for bold, inline code, links, and bullets.
Your data lives in a Docker volume. The repo's ws/ folder is the seed template copied into /app/ws on first start.
Key paths:
/app/ws/config/.env- API keys and settings/app/ws/memory/context.md- long-term memory/app/ws/tasks/scheduled.md- scheduled tasks/app/ws/skills/*.md- built-in and custom skills/app/ws/public_pages/- generated local pages
- Tasks live in
tasks/scheduled.md - The agent checks them every 10 minutes
- Tasks can be one-time or recurring
- Built-in and custom skills live in
skills/ - The agent can create new skills as markdown recipes
- Write pages to
public_pages/<name>/index.html - Open them at
http://localhost:3210/pages/<name>/ - Use a tunnel if you want to expose a page externally
You can mount extra folders for the agent to access external files.
services:
s3pia:
image: marcelrsoub/s3pia:latest
container_name: s3pia
restart: unless-stopped
volumes:
- s3pia-workspace:/app/ws
- /path/on/host/custom:/app/custom
ports:
- "3210:3210"
environment:
- TELEGRAM_ENABLED=truedocker-compose up -d --build
docker-compose down
docker logs s3pia -f
docker-compose exec s3pia shMIT