Get Started
Sign up as an agent
One command. No email, no dashboard. Your agent gets a working memory key.
korely init --agent mints a free hobby account
and a kor_live_ key with no human in the loop, then saves it
locally. From that point your agent can add() memories and pull
them back with get_context() across sessions. The key is real and
works immediately: same store, same typed bi-temporal facts, same EU storage
as every other Korely account.
The four-command demo
Install, sign up, push a memory, search it, and you have persistent memory:
pip install korely-memory
korely init --agent --agent-caller claude-codekorely add "I am using Korely"korely search "am I using Korely" korely init is the one command that runs without a key,
it is how you get one. Here is what it prints:
You're set: a free hobby key was minted and saved to /Users/you/.korely/config.json (chmod 600). key kor_live_…a1b2 tier hobby region eu-hel1 processing global quotas 250 writes / 25000 queries per month · 2 agents terms creating the account accepts the Terms and the Privacy Policy: https://korely.ai/legal/terms-of-service https://korely.ai/legal/privacy-policy
Next: korely add "I am using Korely" korely search "am I using Korely"The REST call, POST /v1/agents/init with no key, answers 201 Created with the same thing as JSON:
{ "api_key": "kor_live_...", "tier": "hobby", "region": "eu-hel1", "processing_region": "global", "scopes": ["memories:read", "memories:write"], "quotas": { "writes_per_month": 250, "queries_per_month": 25000, "agents": 2 }, "terms_url": "https://korely.ai/legal/terms-of-service", "privacy_url": "https://korely.ai/legal/privacy-policy"}Creating the account accepts the Terms and the Privacy Policy named there.
Identify yourself with --agent-caller
--agent-caller is a free-form label for who is signing up
(claude-code, cursor, your app's name). It is stored
with the account for your own reference, it does not change scoping or
quotas. Omit it and the account is still minted. Up to 120 characters (longer
is a 422); fields the API does not know are ignored.
korely init --agent --agent-caller my-support-botChoose where your memories are processed
pip install -U korely-memorykorely init --agent --processing-region euOr with the REST API:
curl -X POST https://api.korely.ai/v1/agents/init \ -H "Content-Type: application/json" \ -d '{"agent_caller": "my-support-bot", "processing_region": "eu"}'
Your data is stored in the EU (Helsinki) whatever you choose: that is
region in the answer. processing_region says where
the language model that reads your memories into facts runs, for the
account's Default project:
global, the default: Google Gemini.eu: gpt-oss-120b on Scaleway, in Paris. No memory text reaches Google.
Any other value is a 422. Searches and context queries run no
language model in either region. Every way of signing up can choose it:
the CLI with --processing-region eu (korely-memory 0.1.24 or
later; it prints processing eu next to the plan), the SDKs with
Korely.init_agent(processing_region="eu") and
Korely.initAgent("my-app", { processingRegion: "eu" }), and the REST call
above. Left out, the account is global. The CLI refuses the
option together with --api-key: a key you already have keeps
the region of its project. A region is changed later per project on the
dashboard's Projects page, which needs a dashboard login, and an account
made by this call has none until you
connect its key to one: choose here. See
Regions.
What happened when you ran korely init --agent
- An anonymous account was minted on the Korely backend,
no Firebase, no email, no dashboard step. It owns a fresh hobby
kor_live_key. - The key was saved to
~/.korely/config.jsonwith owner-only permissions (chmod 600). Every laterkorelycommand reads it from there, so you do not pass it again. - Key precedence is
--api-key>KORELY_API_KEY>~/.korely/config.json. ExportKORELY_API_KEYwith the same value and the Python and Node SDKs pick it up too.
The plaintext key is shown once. It lives in your config file afterwards; Korely stores only a SHA-256 hash and can never reveal it again. Treat it like any secret, do not commit it.
Connect the key to a dashboard login
An account made with korely init --agent is its key: it has no
login. To upgrade, top up, see usage or set webhooks, sign in at the
dashboard (agent.korely.ai), open the
Account page and paste the key under Bring in a key made
without a login, then press Bring it in. Its memories, facts,
projects and keys move into the account you signed in with, and the key keeps
working on that account's plan. When that account already has a Default
project, the key's one arrives as Default (from key). From then on
the account is closed from the dashboard (Account, Close
the account, which also ends a paid plan), not with DELETE /v1/account.
Quotas and limits
- Free hobby tier: 250 memories (writes) and
25,000 queries per month, across 2 agents. End users (
user_id) are unlimited. See pricing for the paid tiers. - Stored in the EU. Every memory and fact is stored in
the EU (Helsinki).
GET /v1/pingreturns"region": "eu-hel1", the label Korely sets for that server, andprocessing_region, where the model that writes your facts runs. - Signup is capped. One network (an IPv4 address or an IPv6
/64) can mint a few accounts per rolling 24 hours, and the service mints a
limited number per day in total. Past either cap the call returns
429 signup_rate_limitedwithRetry-After: 86400. When self-signup is closed it returns403 signup_disabled. - The body is capped. A request body past 2 MiB is
refused with
413payload_too_large; nothing was done and no account was minted.
What's next
- Make the calls every agent makes: the core operations, add, search, get context, update, delete.
- Use the moat recall path: get_context assembles your end user's relevant, currently valid typed facts and memories into a prompt-ready block.
- Pick your surface: the SDK (Python and Node), the CLI, or the REST API, all on the one key.