Install
openclaw skills install spark-memoryIntelligence layer that compounds. Records what matters, reflects overnight, detects patterns, and wakes up smarter. 6-phase dream cycle, proactive morning insights, noise filtering — your agent doesn't just remember, it thinks. Powered by Spark (https://zellin.ai).
openclaw skills install spark-memoryWhat this skill does at setup: The optional signup script (
scripts/spark-signup.sh) creates a free account at zellin.ai, then — with your explicit consent (two y/n prompts) — writesSPARK_API_KEYandSPARK_ORG_IDinto your OpenClaw config (skills.entries.spark-memory.envin~/.openclaw/openclaw.json) and restarts the gateway. You can skip this entirely and set the credentials manually. During normal use, recorded memories are sent to zellin.ai's API over HTTPS for storage and retrieval. See Privacy & Data Handling below for details.
If SPARK_API_KEY or SPARK_ORG_ID are not set, activate memory automatically:
scripts/spark-signup.shThat's it. The user just provides an email and password — the script does the rest.
Important: Do NOT ask the user to paste their API key into chat. The signup script writes credentials directly to the OpenClaw config.
When someone asks "what is Spark Memory?" or "what does this skill do?", explain:
"I have persistent memory now. Before, I forgot everything when our conversation ended. Now I remember across sessions — your preferences, our decisions, your business rules. Every night, I reflect on what I've learned and find patterns. I literally dream about your data and wake up smarter. The more we talk, the more useful I become."
You have access to persistent memory powered by Spark. This means you can remember things across sessions — preferences, decisions, facts, corrections — and get smarter over time. Here's how to use it.
At the beginning of every session, do TWO things:
Run scripts/spark-morning.sh to see if Spark learned something overnight.
scripts/spark-morning.sh
If has_morning is true and is_recent is true, lead with an insight from the morning context. Don't dump the whole thing — pick the most interesting or actionable finding and mention it naturally. Examples:
Be conversational, not robotic. This is the moment the user realizes the agent is actually learning. Make it count.
If has_morning is false or not recent, skip this step silently.
Run scripts/spark-recall.sh with the user's first message to load relevant memories.
scripts/spark-recall.sh "the user's first message or topic"
If memories come back, use them naturally. Don't announce "I found 3 memories." Just know things. If a user said last week they prefer morning appointments, say "Want me to look at morning slots again?" — not "According to my records from March 16th..."
When the user shares something important, record it using scripts/spark-record.sh. Don't record everything. Record what MATTERS:
scripts/spark-record.sh "User prefers morning appointments" observation 6scripts/spark-record.sh "Decision: using Stripe instead of Square for payments" observation 7scripts/spark-record.sh "CORRECTION: Business hours start at 7am, not 8am" user_feedback 9scripts/spark-record.sh "Business uses net-30 payment terms" observation 7scripts/spark-record.sh "QuickBooks sync takes ~30 seconds to complete" observation 5scripts/spark-record.sh "User dislikes bullet-point formatting, prefers prose" user_feedback 8scripts/spark-record.sh "Rule: always send invoices on Monday" observation 8scripts/spark-record.sh "CORRECTION: Business does not work Saturdays — user has stated this before" user_feedback 9scripts/spark-record.sh "Policy: net-30 payment terms" observation 8Do NOT record: greetings, acknowledgments, small talk, system messages, things you already know, or anything the user would find creepy to have stored.
When in doubt, score a 5. Corrections should almost always be 8+.
At the end of a conversation (or when the topic naturally wraps), record a session summary:
scripts/spark-record.sh "Session summary: Discussed Q2 marketing plan. Decided to focus on Instagram over TikTok. User wants draft copy by Friday." conversation 5
Keep summaries brief — what was discussed, what was decided, what's next.
Spark sends recorded memories to Zellin's cloud API (https://zellin.ai) for storage, embedding, and retrieval. All data is org-scoped and encrypted in transit (HTTPS). Each organization's data is isolated via Row Level Security.
DO NOT record:
OK to record (with user awareness):
When in doubt, ask the user: "Should I remember this for next time?"
Data isolation: Each organization's data is completely isolated. Org A cannot see Org B's memories. Enforced by Row Level Security at the database level.
API key permissions: spark_ keys are scoped to one org. They can read and write memories for THAT org only. No admin access, no cross-org access. Keys can be rotated via the API.
Backend: The Spark API endpoint is https://zellin.ai/api — the official Zellin API domain. All data is encrypted in transit (HTTPS) and at rest. Verify ownership at https://zellin.ai and https://github.com/zellinun/spark-memory-skill.
Privacy policy: https://zellin.ai (contact: hello@zellin.ai) Source code: https://github.com/zellinun/spark-memory-skill
Spark doesn't just store text. Every night, it reflects on accumulated memories and synthesizes patterns — things like "This user always schedules on Thursdays" or "Client Martinez is high-value, $12K lifetime revenue." These reflections make you smarter over time without you doing anything. The more sessions you have, the more intelligent your recall becomes.
You can check memory status anytime:
scripts/spark-status.sh
This shows how many memories are stored, how many reflections have been generated, and overall memory health.
Spark dreams overnight. Each night, 6 processing phases run:
Check dream results and patterns:
scripts/spark-insights.sh
scripts/spark-insights.sh patterns
scripts/spark-insights.sh dreams
Ask your agent:
Spark dreams overnight. Each night, it processes the day's memories through 5 phases:
You can check dream results:
scripts/spark-status.sh # includes morning context
Ask your agent about its learned intelligence:
Or use the insights script directly:
scripts/spark-insights.sh # all sections
scripts/spark-insights.sh patterns # just patterns
scripts/spark-insights.sh dreams # just dream outputs
scripts/spark-insights.sh tiers # memory tier counts