telys
Public, thin SDK for Telys — embedded, on-device memory & retrieval. In-process, zero cloud roundtrips at query time.
This package contains only the developer-facing surface: the Telys/Collection facades, query/filter
types, the EmbeddingProvider interface, the Tuner/TuningPlan interfaces, a runtime loader, and the
telys CLI. It contains no engine implementation — the engine is a separate, closed, signed, on-device
runtime fetched by telys runtime install (the D-30 distribution decision: public SDK + closed runtime).
Install
As a CLI (recommended — isolated env, on your PATH, not pinned to one Python):
pipx install telys
# …or the one-liner (installs via pipx):
curl -fsSL https://telys.ai/install.sh | sh
telys login # sign in → free device license + signed runtime; fully offline thereafter
As a library (to import telys in your own project):
python -m venv .venv && . .venv/bin/activate
pip install telys
Plain
pip install --user telysworks too, but pip may warn that its user-scripts dir isn't on your PATH (a macOS--userquirk) —pipxavoids that entirely. Runtime platforms: macOS arm64, Linux x86_64/arm64 (Windows: run under WSL2).
from telys import Telys
db = Telys("./memory")
col = db.create_collection("docs", dim=768, partition_by="tenant_id") # dim is arbitrary — 384/768/1024/1536/3072…
col.add(vectors, ids=ids, metadata=metadata) # bring your own vectors (embedding-agnostic, any dimension)
hits = col.search(qvec, where={"tenant_id": "acme"}, top_k=10, explain=True)
The runtime is required for execution; the embedder is optional — col.add(vectors, …) and
col.add_texts(…) both need the runtime, but only *_texts needs an embedder (bring your own via
telys.embedding.CallableEmbedder, or use the on-device bigram embedder).
For local development, install the runtime as a package instead of via the CLI:
pip install "telys[runtime]" # or: pip install telys-runtime
MCP server
telys mcp runs Telys as a Model Context Protocol server over stdio,
exposing 19 tools — the full memory surface (CRUD, filtered queries, lexical search, compaction / IVF /
tuning, plus a repo auto-indexer) — to any MCP client (Claude Desktop/Code, Cursor, Codex, Qwen Code, …).
Everything is local and offline. Introspection (initialize/tools/list) needs no credentials; executing memory tools requires the one-time free telys login (device authorization, free community plan) — fully offline thereafter, no API key in the client config.
pipx install telys
telys login # free device license + signed on-device runtime
telys runtime verify # confirm the runtime the tools drive is present
telys mcp # serve JSON-RPC 2.0 (protocol 2025-06-18) on stdin/stdout
You rarely start it by hand — telys mcp install writes the server entry into your clients — or add this
block to a client's MCP config yourself:
{
"mcpServers": {
"telys": {
"command": "telys",
"args": ["mcp"]
}
}
}
Registry: io.github.thyn-ai/telys
on the Official MCP Registry. Server source: packages/telys-sdk/telys/mcp.py.
MCP docs: docs.telys.ai/mcp.
| Tool | What it does | Required arguments |
|---|---|---|
telys_search |
Semantic + lexical search over a memory collection | collection, query |
telys_add |
Add text documents (collection auto-created if absent) | collection, texts |
telys_create_collection |
Create a collection (fix name + partition key up front) | name |
telys_list_collections |
List saved collections in the active store | — |
telys_stats |
Row counts and index state for one collection | collection |
telys_upsert |
Add-or-replace rows by id (the idempotent write) | collection, texts, ids |
telys_update |
Re-embed/replace EXISTING ids (strict: ids required) | collection, texts, ids |
telys_delete |
Tombstone rows by id | collection, ids |
telys_ids |
List live external ids, optionally where-scoped |
collection |
telys_count |
Live row count, optionally where-scoped |
collection |
telys_get |
Exact row lookup by id (re-reads repo source slices) | collection, ids |
telys_search_lexical |
On-device BM25 keyword search | collection, query |
telys_compact |
Flush tombstones, merge delta into the base layout | collection |
telys_build_ivf |
Build per-partition IVF indexes (recall-floor calibrated) | collection |
telys_build_lexical |
Fit the BM25 lexical index | collection |
telys_tune |
Produce (and optionally apply) a TuningPlan | collection |
telys_index_repo |
Walk + chunk + ingest a repo, incrementally refreshed | — |
telys_repo_search |
Search the auto-indexed repo (re-indexes first, always fresh) | query |
telys_workspace_info |
Report the configured workspace, repo_id and file count | — |
Every tool ships a rich description (what it does, when to use it, parameters with defaults, failure modes)
and static MCP annotations (readOnlyHint / destructiveHint / idempotentHint / openWorldHint) —
openWorldHint: false throughout: the server makes no network calls. Listing the tools needs no
credentials and no runtime: initialize + tools/list answer from the static tool registry; only actual
tool calls load the signed runtime lazily.
Documentation
Full documentation lives at docs.telys.ai:
- Quickstart: your first collection
- Working with data — add, upsert, search, filter, snapshot
- Embeddings — built-in lexical + bring-your-own via
CallableEmbedder - CLI reference · MCP integration · Self-hosting
- SDK API index
Links
- Website: telys.ai · Pricing: telys.ai/pricing
- Account & billing: accounts.thyn.ai
- Docs: docs.telys.ai · PyPI: pypi.org/project/telys
Release files for telys 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| telys-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Release files / telys-0.1.5-py3-none-any.whl
| Download URL | telys-0.1.5-py3-none-any.whl |
|---|---|
| Size | 81.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7df67987ba4d48bb67bab9197cc8ba21586170a19c78f4350ab88b19fc2d829e
|
|
BLAKE2b-256 checksum How to use checksums |
ccf443b67af96df3d9ac4d00f78b3e9a044a003df2fd8984fa0495efb5a7d3c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|