TinyOraClaw is a fork of TinyClaw that replaces all SQLite storage with Oracle AI Database as the exclusive persistence layer. Every message, conversation, and memory is stored in Oracle with in-database ONNX vector embeddings for semantic recall.
TinyClaw is a multi-agent, multi-team, multi-channel 24/7 AI assistant framework. TinyOraClaw preserves all of its capabilities while adding enterprise-grade persistence and vector search.
Full interactive presentation: Open
tinyoraclaw-presentation.htmlin your browser for all 24 slides with animations and keyboard navigation.
Title![]() |
Architecture![]() |
Team Orchestration![]() |
7 Oracle Tables![]() |
Web Dashboard![]() |
Tech Stack![]() |
| Feature | SQLite (upstream) | Oracle AI Database (TinyOraClaw) |
|---|---|---|
| Embeddings | None | In-database ONNX (VECTOR_EMBEDDING()) |
| Semantic Search | None | VECTOR_DISTANCE() with COSINE similarity |
| Crash Recovery | WAL journal | Full ACID transactions |
| Concurrent Access | File-level locking | Connection pooling + row-level locking |
| Scalability | Single-file | Enterprise (FreePDB local or ADB cloud) |
| Audit Trail | None | Full transcript logging |
Everything from TinyClaw:
- Multi-agent — Run multiple isolated AI agents with specialized roles
- Multi-team collaboration — Agents hand off work via chain execution and fan-out
- Multi-channel — Discord, WhatsApp, and Telegram
- Web portal (TinyOffice) — Browser-based dashboard for chat, agents, teams, tasks, logs
- Team Observation — Observe agent team conversations in real-time
Plus Oracle AI Database:
- Oracle AI Database as exclusive storage backend (not SQLite, not files)
- In-database ONNX embeddings (ALL_MINILM_L12_V2) — zero external API calls
- Semantic memory recall — agents remember by meaning, not just keywords
- Python FastAPI sidecar for all Oracle operations
- Docker Compose with FreePDB (local) + ADB (cloud) modes
- Full audit transcripts with agent attribution
┌─────────────────────────────────────────────────┐
│ TinyClaw (TypeScript/Node.js) │
│ ├── Channels: Discord, Telegram, WhatsApp │
│ ├── Hono API Server (:3777) ◄──────────┐ │
│ ├── Queue Processor │ │
│ └── Agent Coordination │ SSE │
│ │ HTTP/REST │ │
│ ▼ │ │
│ TinyOraClaw Service (Python FastAPI :8100) │
│ ├── Message Queue API │
│ ├── Memory Service (VECTOR_EMBEDDING) │
│ ├── Session Service │
│ ├── Transcript Service │
│ └── Connection Pool Manager │
│ │ oracledb (async) │
│ ▼ │
│ Oracle AI Database 26ai Free (:1521) │
│ ├── TINY_MESSAGES (queue lifecycle) │
│ ├── TINY_RESPONSES (delivery tracking) │
│ ├── TINY_MEMORIES (VECTOR(384) + COSINE) │
│ ├── TINY_SESSIONS (JSON CLOB history) │
│ ├── TINY_TRANSCRIPTS (audit log) │
│ ├── TINY_STATE (agent K-V store) │
│ └── TINY_META (schema versioning) │
├─────────────────────────────────────────────────┤
│ TinyOffice (Next.js :3000) ─────────────┘ │
│ ├── Real-time agent/team dashboard │
│ ├── Web chat console │
│ ├── Kanban task board │
│ └── Logs & settings viewer │
└─────────────────────────────────────────────────┘
The tinyoraclaw-service sidecar handles all Oracle operations:
- Connection pooling and lifecycle management
- Schema initialization (auto-init on startup)
- Embedding generation via
VECTOR_EMBEDDING() - Memory store with vector similarity search
- Session persistence (JSON CLOB)
- Full audit transcripts
Upstream TinyClaw connects to the sidecar via HTTP/REST, replacing all SQLite calls.
One-command install — clone, configure, and run in a single step:
curl -fsSL https://raw.githubusercontent.com/jasperan/tinyoraclaw/main/install.sh | bashAdvanced options
Override install location:
PROJECT_DIR=/opt/myapp curl -fsSL https://raw.githubusercontent.com/jasperan/tinyoraclaw/main/install.sh | bashOr install manually:
git clone https://github.com/jasperan/tinyoraclaw.git cd tinyoraclaw # See below for setup instructions
git clone https://github.com/jasperan/tinyoraclaw.git
cd tinyoraclawcp .env.example .env
docker compose up oracle-db tinyoraclaw-service -d
# Wait for Oracle to become healthy (~2 minutes on first run)
docker compose logs -f oracle-dbnpm install
npm run build# Set up agents via the TinyClaw setup wizard
./tinyclaw.sh setup
# Start everything (queue, channels, heartbeat, TinyOffice dashboard)
./tinyclaw.sh startTinyOffice launches automatically at http://localhost:3000 — open it in your browser to watch agents communicate in real time, manage teams, chat via the web console, and monitor the message queue.
To run just the queue processor standalone:
npm run queue# Full stack: Oracle + Sidecar (default)
docker compose up -d
# Oracle only (for local dev against sidecar)
docker compose up oracle-db -d
# ADB cloud mode (no local Oracle needed)
docker compose --profile adb up tinyoraclaw-service-adb -d| Table | Purpose | Key Feature |
|---|---|---|
TINY_META |
Schema versioning | Single row per key |
TINY_MESSAGES |
Message queue | Full lifecycle: pending → processing → completed/dead |
TINY_RESPONSES |
Response tracking | Delivery status with ack timestamps |
TINY_MEMORIES |
Long-term memory | VECTOR(384) + COSINE index for semantic recall |
TINY_SESSIONS |
Chat history | JSON CLOB per team (replaces filesystem .md) |
TINY_TRANSCRIPTS |
Audit log | Full conversation record with agent attribution |
TINY_STATE |
Agent K-V store | Composite PK (agent_id, key) |
All tables support multi-agent isolation via agent_id column.
ORACLE_MODE=freepdb
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SERVICE=FREEPDB1
ORACLE_USER=tinyoraclaw
ORACLE_PASSWORD=TinyOraClaw2026 # pragma: allowlist secretORACLE_MODE=adb
ORACLE_USER=ADMIN
ORACLE_PASSWORD=Welcome12345* # pragma: allowlist secret
ORACLE_DSN=(description= (retry_count=20)(retry_delay=3)...)See .env.example for full configuration reference.
The Python FastAPI sidecar exposes these endpoints on port 8100:
| Endpoint | Method | Purpose |
|---|---|---|
/api/health |
GET | Readiness + DB connectivity |
/api/init |
POST | Manual schema initialization |
/api/queue/enqueue |
POST | Add message to queue |
/api/queue/next/{agent_id} |
GET | Claim next pending message |
/api/queue/status |
GET | Queue counts by status |
/api/memory/remember |
POST | Store memory with auto-embedding |
/api/memory/recall |
POST | Semantic vector search |
/api/sessions/save |
POST | Persist chat session |
/api/sessions/{team_id} |
GET | Load session history |
/api/transcripts/log |
POST | Write audit entry |
Deploy a fully configured TinyOraClaw instance on OCI with Oracle AI Database — all automated.
What gets deployed:
- OCI Compute instance (shape of your choice, ARM A1.Flex is Always Free)
- Oracle AI Database 26ai Free container (or managed Autonomous DB)
- TinyOraClaw Python sidecar (auto-init schema)
- Node.js 22 with TinyClaw built and ready
- Systemd service for the queue processor
After deployment:
ssh opc@<public-ip>
cd /opt/tinyoraclaw
./tinyclaw.sh setup # configure agents
systemctl start tinyoraclaw-queue # start processingTinyOffice is a Next.js web dashboard that launches automatically with ./tinyclaw.sh start. It connects to the Hono API server via SSE for real-time updates.
URL: http://localhost:3000 (starts automatically)
| Feature | Description |
|---|---|
| Live Dashboard | Real-time agent activity via Server-Sent Events |
| Web Chat Console | Send messages to @agent or @team from the browser |
| Agent & Team Management | Create, edit, and delete agents and teams |
| Kanban Task Board | Drag-and-drop task management with agent assignment |
| Logs Viewer | Live event stream and historical log browsing |
| Settings Editor | Edit settings.json directly from the UI |
| Office View | Visual simulation of agent workspace |
To run TinyOffice standalone (without the full daemon):
npm run tinyoffice
# or
cd tinyoffice && npm run devTinyOraClaw can optionally use OCI Generative AI as an LLM backend via the oci-openai Python library. This is not required — the default LLM provider (Anthropic/OpenAI via API keys) works out of the box.
- Enterprise models — Access xAI Grok, Meta Llama, Cohere, and other models through OCI
- OCI-native auth — Uses your existing
~/.oci/configprofile (no separate API keys) - Same region as your database — Run inference and storage in the same OCI region
-
Install the OCI GenAI client:
cd oci-genai pip install -r requirements.txt -
Configure OCI credentials (
~/.oci/config):[DEFAULT] user=ocid1.user.oc1..aaaaaaaaexample fingerprint=aa:bb:cc:dd:ee:ff:00:11:22:33:44:55:66:77:88:99 tenancy=ocid1.tenancy.oc1..aaaaaaaaexample region=us-chicago-1 key_file=~/.oci/oci_api_key.pem
-
Set environment variables in your
.env:OCI_PROFILE=DEFAULT OCI_REGION=us-chicago-1 OCI_COMPARTMENT_ID=ocid1.compartment.oc1..your-compartment-ocid
-
Start the OCI GenAI proxy:
cd oci-genai python proxy.py # Proxy runs at http://localhost:9999/v1
-
Point TinyOraClaw at the proxy by configuring the LLM provider to use
http://localhost:9999/v1as the base URL with any API key value.
See oci-genai/README.md for full documentation.
| Project | Upstream | Language | Description |
|---|---|---|---|
| OracLaw | OpenClaw | TypeScript + Python | Code-aware AI with Oracle memory |
| PicoOraClaw | PicoClaw | Go | Lightweight agent with Oracle storage |
| ZeroOraClaw | ZeroClaw | Rust | High-performance agent with Oracle backend |
| TinyOraClaw | TinyClaw | TypeScript + Python | Multi-agent teams with Oracle persistence |
| IronOraClaw | IronClaw | Rust | Secure AI assistant with Oracle backend |
MIT License — see LICENSE for details.
Based on TinyClaw by Jian Liao.






