Licensing
SmartMemory Lite is the local, zero-infrastructure runtime published on PyPI as smartmemory and smartmemory-core. It ships as a compiled runtime under the SmartMemory Lite Runtime License. The hosted service, the server components, and the full platform are licensed separately.
What you can do without asking
The Lite Runtime License lets you install and use the runtime for:
- personal use
- internal tools and services inside your organization
- evaluation, research, and education
- building and testing applications
- shipping a non-commercial application that is free of charge
No source disclosure is ever required for your application.
Shipping Lite inside a commercial product
Distributing the runtime as part of a product that is sold, subscribed to, or otherwise commercial needs a Lite Redistribution Agreement. It is a one-page agreement, and it is free:
- during early access, and
- for organizations below the revenue threshold stated in the agreement.
The threshold is your organization's total revenue in its most recently completed fiscal year. The people who use your application never need a license from us and never pay us anything.
Above the threshold, commercial terms are agreed case by case with at least 90 days notice before any fee applies. Nothing is ever charged retroactively. Licensees above the threshold tell us within 30 days of their fiscal year end.
You can complete one here. Read the agreement, fill in your organization and the applications that will ship SmartMemory Lite, and accept. We email you a PDF copy of the completed agreement straight away.
SmartMemory Lite Redistribution Agreement
Loading the agreement text...
If you would rather do this by email, write to help@smartmemory.ai with your product name and a contact address.
What the license does not allow
- modifying, decompiling, or reverse engineering the runtime
- redistributing the runtime on its own, or as the core of a memory or retrieval product
- using the runtime to build a service that competes with the SmartMemory hosted service
- removing copyright or attribution notices
Update check and install counts
On the first SmartMemory() construction in a process, the runtime asks our API once whether a newer smartmemory-core is available, and again at most once every 24 hours after that. This tells you when to upgrade, and it is also how we count installs.
What is sent:
- a random install id generated on first run and stored locally, not derived from your hardware or hostname
- the runtime version and Python version
- your platform (for example
linux,darwin,win32) and CPU architecture (for examplearm64) - the backend mode of the memory that started the check (
liteorserver) - your
SMARTMEMORY_LICENSE_KEY, if you have set one
What is never sent: memory content, query text, file paths, project names, your hostname, or your username.
What our server keeps for each ping, in addition to the fields above: the time it arrived, the request IP address (used for rate limiting and coarse service health, never resolved to a person or an organization), and the User-Agent header, which is smartmemory-lite/<version>. An IP address together with a persistent install id is personal data under the GDPR, which is why the opt-out below is a real switch and not a preference.
Two environment variables turn the check off completely:
SMARTMEMORY_NO_UPDATE_CHECK=1DO_NOT_TRACK=1
The check also skips itself automatically in CI environments, runs on a background thread with a short timeout, and never blocks startup or raises an error.
If you have a Lite Redistribution Agreement, set SMARTMEMORY_LICENSE_KEY to the key from your agreement in the application you ship, so its installs are attributed to your agreement rather than counted as unlicensed.
What reads SMARTMEMORY_LICENSE_KEY
Exactly one thing: the update check described above, in smartmemory/update_check.py. It reads the variable and includes the value in the ping so the install is attributed to your agreement. Nothing else in the runtime reads it. It does not unlock features, it is not checked by the vector store, the graph store, the pipeline, or the CLI, and a missing, empty, or unknown key never changes behavior. If you disable the update check, the key is never read at all. A contract test in core pins this so it stays true across releases.
Client libraries
The Python client (smartmemory-client) and the JavaScript SDK (@smartmemory/sdk-js) are thin API clients and carry their own permissive licenses.
Full text
The complete license is included in every wheel as LICENSE and in the package metadata on PyPI.