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 quotas 250 writes / 25000 queries per month · 2 agents
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 }}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
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. processing_region is a REST
field: korely init and the SDKs' init_agent() /
initAgent() do not send it yet, so they sign you up on
global. 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) and paste
the key on the API Keys page, under Connect that key to
this login. 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 (Settings, Close your
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). Confirm it any time with
GET /v1/ping: it returns"region": "eu-hel1", 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.
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 currently-valid typed facts into a prompt-ready block.
- Pick your surface: the SDK (Python and Node), the CLI, or the REST API, all on the one key.