Standard library
The standard library is a set of published Telo modules — the surface you import from. Nothing here is built into the kernel: each module is an ordinary artifact resolved by ref, versioned on its own, and replaceable by one of your own.
This page is the map. The authoritative reference for any kind — its full field schema, inputs and outputs — is the hub, which reads it straight from the published manifest, so it is never out of date with the version you are importing.
Importing a module
Declare it in the imports: map under an alias you choose, pinned to an
exact version. The alias is the kind prefix everywhere in that file — a
module does not dictate what you call it:
imports:
Http: oci://ghcr.io/telorun/http-server@0.38.0
Db: oci://ghcr.io/telorun/sqlite@0.10.1
---
kind: Http.Server # ← the alias you chose, not the module's directory name
telo upgrade ./manifest.yaml moves pins to the latest published version;
telo install ./manifest.yaml pre-fetches everything so the run needs no
network. Both are covered in the CLI reference.
An import may also carry a #sha256-… integrity pin, which is verified on
every read — see Security & supply chain.
Finding a module
- hub.telo.run — search by what a resource does, browse by category, and read the exact schemas of the version you are pinning.
telo search "<what you need>"— the same index from the terminal.- MCP — point a coding agent at the hub's MCP server so it authors against the real schemas instead of guessing; see Coding agents.
Modules by category
Categories are declared by module authors, so a module appears under each
one it claims. Kind names below are the suffixes — you write them as
<YourAlias>.<Kind>.
AI
| Module | Kinds | What it's for |
|---|---|---|
ai | Model, ModelStream, Buffered, Text, TextStream, ToolProvider, Tools, Agent, AgentStream, ImageModel, Image | Language and image models over any provider: buffered text, token-by-token streaming, prompt-to-picture generation and editing, and a tool-use agent loop that calls the model, runs the tools it asks f… |
ai-mcp | ToolProvider, PromptToolProvider | Brings the tools and prompts a connected MCP server offers into an AI agent, so a model can call them like any other tool — a prompt is rendered with the model's arguments and its messages handed back… |
anthropic | MessagesModel, MessagesModelStream | Claude language models from Anthropic over the Messages HTTP API, with no vendor SDK: complete or streamed answers with tool calling, image and PDF input, extended thinking that survives a tool loop,… |
embedding | Model, Query, Passage | Turns text into vectors for semantic search over any embedding provider. |
mcp-client | Client, SessionProvider, HttpClient, StdioClient, ToolsCall, ToolsList | Talks to Model Context Protocol (MCP) servers: list the tools a server advertises and call one by name, getting back its content blocks, or list its prompts and render one with arguments into messages… |
mcp-server | StdioServer, HttpEndpoint, Tools, Resources, Prompts | Exposes an application to AI clients over the Model Context Protocol: bundle existing resources as callable tools, readable resources and fetchable prompts, then serve them either over standard input… |
ocr | Recognizer | Optical character recognition (OCR) over any engine: read the printed text in an image and get it back with a confidence score, plus every block, line and word with its pixel bounding box and outline… |
openai | ChatModel, ChatModelStream, Model, ModelStream, ResponsesModel, ResponsesModelStream, ImageModel, EmbeddingModel | Language, image and embedding models for OpenAI and any OpenAI-compatible endpoint — Azure OpenAI, gateways, self-hosted servers — over the chat completions, responses, images and embeddings HTTP APIs… |
tesseract | Recognizer, TesseractModel.Language, TesseractModel.OrientationModel | Offline optical character recognition (OCR): read printed text from PNG, JPEG, WebP, BMP and PNM images with the Tesseract engine, with nothing installed on the host. |
tesseract-model | Model, Language, OrientationModel | Trained models for Tesseract OCR: declare a language recognition model or the page orientation and script detection model by pointing at its .traineddata file, gzip-compressed or raw. |
vector-store | Store, Record, Match, Removal | Semantic search over an index of vectors: store embeddings with ids and metadata, query for the nearest neighbours of a vector with scores, and delete by id or by a metadata filter. |
vector-store-memory | Store | An in-process vector index ranked by cosine, dot-product or euclidean similarity, held in the running process's memory with no external service to run. |
vector-store-pgvector | Store | A durable vector index kept in PostgreSQL with pgvector, ranked by cosine, dot-product or euclidean distance. |
Compute
| Module | Kinds | What it's for |
|---|---|---|
app | Instance | Runs another application as a resource of this one: supervise several applications from a single manifest, or stand one up for the length of a test and call it over the network. |
container | Engine, Instance, Port, Readiness, LogReady | Start a disposable container from an image for the lifetime of an application or test — a database, a queue, any service a test needs — wait until it is ready, and read the address its ports are reach… |
docker | Engine | Run disposable containers through a Docker-compatible engine — a local Docker or Podman daemon, or a runner that serves one per session — reached over a unix socket or HTTP(S) with an optional bearer… |
javascript | Script | Runs inline JavaScript inside a manifest: a main(input) function whose return value becomes the result, with optional typed inputs and outputs. |
run | Sequence, Value, Choice, Loop, Iteration, Projection, Detach | Control flow for manifests: ordered sequences of steps with conditionals, loops, switches and error handling; iteration and mapping over collections at a chosen concurrency; first-match decision table… |
shell | Host, Command, CommandStream, LocalHost | Runs shell commands and programs against a configurable execution target: to completion, returning captured output and exit code, or streaming output as it arrives for long-running work. |
starlark | Script | Runs embedded Starlark — the sandboxed, Python-like configuration language — as a callable resource with typed inputs and outputs. |
Configuration
| Module | Kinds | What it's for |
|---|---|---|
config | EnvironmentVariableStore, Variables, Secrets, Env | Reads configuration values and secrets out of environment variables into typed, schema-checked values a manifest can reference. |
Coordination
| Module | Kinds | What it's for |
|---|---|---|
durable | Run, Idempotent, Sleep, Await, Value | Work that survives process death: a body of steps whose progress is recorded as it runs, so a crash and a restart continue where the work stopped instead of repeating every effect or losing them all. |
durable-local | Workflow, Journal, Resumer, Deliver, Status, Result, Cancel, Schedule, Resume | Runs a body of steps so that a crash and a restart continue where the work stopped, with no engine to deploy: progress is recorded to a store you choose, and a poller picks up runs the process died in… |
idempotency | Once | At-most-once execution for work that touches the outside world — charging a card, sending mail, firing a webhook. |
lease | Critical | Mutual exclusion across processes and hosts: work wrapped in a lease runs for at most one holder per key, and a caller that arrives while someone holds it is told who has it instead of running anythin… |
watch | Wait, Publish, Store, MemoryStore | Wake-up signals for long polling: a caller waits until a topic's version moves past the cursor it last read, and a writer raises that version after committing a change. |
Data
| Module | Kinds | What it's for |
|---|---|---|
brave | WebSearchEngine | Web search through the Brave Search API, an independent web index: ranked results with title, URL, snippet and page age for a query, with country, language, recency and safe-search settings, paging wi… |
codec | Encoder, Decoder | The shared contract for stream codecs: encoding turns a stream of records into a stream of bytes ready for transport, decoding turns bytes back into values or records. |
collection | GroupBy, Summarize, Fold, Sort, Distinct, Chunk, Join | Reshaping a collection of records with CEL expressions: group and reduce by a key, summarize a whole set into one row, accumulate across elements with author-defined state, order by several computed s… |
crud | Model, Resource, Ui | Serves a full REST API over a database table from one declaration: a paginated list with cursor paging, a total count, and filtering and sorting limited to the fields the data model allows, plus read… |
exa | WebSearchEngine | Web search through the Exa Search API, a neural search engine for AI applications: ranked results with title, URL, highlighted excerpts and publication date for a query, with location, recency and con… |
graph | Store, Node, Relationship, CreateNode, MergeNode, UpdateNode, DeleteNode, GetNode, FindNodes, CreateRelationship, MergeRelationship, UpdateRelationship, DeleteRelationship, FindRelationships, Traverse | A knowledge graph of typed entities and typed links between them: create, upsert, update, delete and look up nodes and relationships by key, filter them by property, and traverse several hops to find… |
graph-layers | Store, RetractNode, RetractRelationship, DraftedStore, OpenDraft, DraftSession, Publish, DiscardDraft, RebaseDraft, ListDrafts, NodeConflicts, RelationshipConflicts, ResolveNodeConflict, ResolveRelationshipConflict, RevisionedStore, ListRevisions, PinBase, UnpinBase, ListBases, LabelRevision | Several knowledge graphs kept as named layers in one database, where a layer can be built on one or many others: what a layer states overrides or hides what lies beneath. |
graph-layers-current-postgres | NodeTable, RelationshipTable, Node, Relationship, Store | Keeps layered knowledge graphs in PostgreSQL with no versioning: every entity type and link type is a table the application declares, shared by all layers, and each layer holds only its current statem… |
graph-layers-current-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store | Keeps layered knowledge graphs in SQLite with no versioning: every entity type and link type is a table the application declares, shared by all layers, and each layer holds only its current statements… |
graph-layers-drafts-postgres | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, DraftsTable | Keeps layered knowledge graphs in PostgreSQL with drafts: every entity type and link type is a table the application declares, shared by all layers, and each layer's changes are staged in a draft and… |
graph-layers-drafts-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, DraftsTable | Keeps layered knowledge graphs in SQLite with drafts: every entity type and link type is a table the application declares, shared by all layers, and each layer's changes are staged in a draft and publ… |
graph-layers-revisions-postgres | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, ChangesetsTable, ChangesetBasesTable | Keeps versioned knowledge graphs in PostgreSQL: every entity type and link type is a table the application declares, shared by all layers, and every published revision of a layer is retained. |
graph-layers-revisions-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, ChangesetsTable, ChangesetBasesTable | Keeps versioned knowledge graphs in SQLite: every entity type and link type is a table the application declares, shared by all layers, and every published revision of a layer is retained. |
graph-layers-sql | Node, Relationship, CurrentStore, DraftedStore, RevisionedStore | The shared half of keeping layered knowledge graphs in a relational database: the entity-type, link-type and layer-store contracts, the rules that make a table safe to hold several overlaid layers, an… |
graph-sql | Node, Relationship, Store | Stores a knowledge graph in ordinary relational tables: each entity type and each link type is a table the application declares and migrates itself, and the graph is mapped onto them. |
gzip | Encoder, Decoder | Gzip compression and decompression as a streaming codec: bytes in, compressed bytes out, and back again. |
html | JsonTree, Selection, Extraction, SafeTree, Markup, PlainText, Markdown, Metadata, MainContent | Read, query and transform web pages: parse HTML (text or bytes in any charset) into a tree CEL can read, select elements with CSS selectors, extract typed fields for scraping, sanitize untrusted marku… |
i18n | Catalog, Translator, Negotiator | Translation of an application's texts into the caller's language: catalogs of translations per language, a translator formatting a text with its values and plural rules in the language asked for, fall… |
image | Blank, Overlay, Fit | Image processing for uploads and vision pipelines: resize a picture to fit a box before storing it or sending it to a model, with file-size and pixel limits enforced before decoding; make a solid-colo… |
kagi | WebSearchEngine | Web search through the Kagi Search API, an ad-free paid search service: ranked results with title, URL, snippet and date for a query, with region, recency and safe-search settings, paging with an opaq… |
media-type | Detector | Content sniffing for uploads and files: identifies what a value really is from its leading bytes, by magic number, and reports whether the media type a client declared was contradicted by the content.… |
multipart | Encoder, Decoder, Reader | Multipart bodies: combine several parts — a JSON document, a file, a form field — into one payload with the boundary framing servers expect, and split a received payload back into its parts — either c… |
ndjson-codec | Encoder | Newline-delimited JSON on the wire: a stream of records becomes bytes carrying one JSON document per line, the usual shape for line-oriented log and event feeds that a consumer can read incrementally.… |
ocr | Recognizer | Optical character recognition (OCR) over any engine: read the printed text in an image and get it back with a confidence score, plus every block, line and word with its pixel bounding box and outline… |
octet-codec | Encoder, Decoder | Raw binary on the wire: bytes pass through untouched on the way out, and on the way in every chunk is collected into one contiguous buffer. |
pdf | Rasterizer, Text, FormFields | Working with PDF documents: render a page to an image at a chosen scale, read the text a document renders, and add editable form fields — text boxes, checkboxes, signatures — at measured positions. |
pdfmake | Document | Authoring PDF documents declaratively: pages, styled text, tables, columns, stacks, lists, images, SVG artwork and vector canvas, with named styles, page backgrounds, headers and footers, and embedded… |
plain-text-codec | Encoder, Decoder | Plain UTF-8 text on the wire: a stream of text pieces — including the delta records a model emits while streaming — becomes bytes, and a byte stream is collected back into one string. |
searxng | WebSearchEngine | Web search through a self-hosted SearXNG metasearch instance: queries its JSON API with language, recency and safe-search settings and returns ranked results with title, URL, snippet and publication d… |
sql-repository | Read, Create, Update, Delete | Table-level create, read, update and delete handlers that generate their SQL from the shape of the call: filters become a WHERE clause, a data object becomes the column list. |
sse-codec | Decoder, Encoder | Server-Sent Events on the wire: a stream of event records becomes the framed bytes a browser's EventSource reads, one named event per record. |
tar | Extract, Pack | Reading and writing tar archives as byte streams: build one from a list of paths and contents, or pull a single named file out of an existing archive. |
tavily | WebSearchEngine | Web search through the Tavily Search API, built for AI agents and retrieval: ranked results with title, URL, content snippet and publication date for a query, with language, country, recency and safe-… |
tesseract | Recognizer, TesseractModel.Language, TesseractModel.OrientationModel | Offline optical character recognition (OCR): read printed text from PNG, JPEG, WebP, BMP and PNM images with the Tesseract engine, with nothing installed on the host. |
text-diff | LineDiff | Compare two texts line by line: how many lines were added and removed, and the changes grouped into hunks with surrounding context — a unified diff as structured data rather than text. |
type | JsonSchema | Reusable data shapes declared once and referenced anywhere a type is expected: a call's inputs or results, a request body, a model's output. |
web-search | Engine | Web search over any engine: send a query with optional language, country and recency hints and get ranked results with title, URL, snippet and publication date, plus an opaque cursor for the next page… |
yaml | Parse | Turns YAML text into ordinary data a manifest can read — configuration files, front matter, API payloads. |
Observability
| Module | Kinds | What it's for |
|---|---|---|
console | WriteLine, Write, ReadLine, WriteStream, StreamWait | Terminal input and output: print lines with inline colour and style markup, write text or bytes exactly as given, prompt the user and read a line back, drain a stream to standard output chunk by chunk… |
log | Emit | Write a structured diagnostic log record from a manifest: a startup warning, an audit line, a milestone in a pipeline. |
otlp | Sink, TraceSink | Ships an application's structured log records and finished trace spans to an OpenTelemetry collector over OTLP, batched and flushed on an interval, with resource attributes such as the service name at… |
record-stream | ExtractText, Tee, EndHandler, OnComplete, JournalStore, MemoryJournalStore, Journal, JournalSink, JournalClaim, JournalSource, JournalRead, JournalRemoval, JournalExpiry | Operations on streams of structured records, whatever the format: project a mixed record stream down to plain text, fan one stream out to two consumers, run a handler exactly once however a stream end… |
Performance
| Module | Kinds | What it's for |
|---|---|---|
benchmark | Suite | Load and performance benchmarking for any callable resource: drives weighted scenarios at a chosen concurrency for a duration or a request count, discards a warm-up window, and reports latency percent… |
cache | Store, Lookup, Entry, View | Caching of computed or fetched values under a key, with freshness windows: an entry is fresh for its TTL, then stale for a grace period, then gone. |
cache-memory | Store | In-process cache storage: entries live in the running process's memory with the usual fresh and stale windows, bounded by a maximum entry count. |
cache-redis | Store | Redis-backed caching shared by every instance of an application — cached results and counters that outlive one process, under an optional key prefix so several apps can share a server. |
rate-limit | Guard, Budget | Throttling and quota enforcement per client, tenant or API key: a sliding-window limiter that counts requests, and a windowed budget that debits a weighted cost — tokens, bytes, any metered spend — re… |
Reliability
| Module | Kinds | What it's for |
|---|---|---|
durable | Run, Idempotent, Sleep, Await, Value | Work that survives process death: a body of steps whose progress is recorded as it runs, so a crash and a restart continue where the work stopped instead of repeating every effect or losing them all. |
durable-journal-file | Journal | Records durable runs to a directory on disk: one append-only file per run, written and flushed as each step completes, so a process that dies leaves everything already finished on disk. |
durable-journal-postgres | Journal | Records durable runs in two tables on a PostgreSQL database, so several machines can record and recover the same work. |
durable-local | Workflow, Journal, Resumer, Deliver, Status, Result, Cancel, Schedule, Resume | Runs a body of steps so that a crash and a restart continue where the work stopped, with no engine to deploy: progress is recorded to a store you choose, and a poller picks up runs the process died in… |
idempotency | Once | At-most-once execution for work that touches the outside world — charging a card, sending mail, firing a webhook. |
lease | Critical | Mutual exclusion across processes and hosts: work wrapped in a lease runs for at most one holder per key, and a caller that arrives while someone holds it is told who has it instead of running anythin… |
rate-limit | Guard, Budget | Throttling and quota enforcement per client, tenant or API key: a sliding-window limiter that counts requests, and a windowed budget that debits a weighted cost — tokens, bytes, any metered spend — re… |
Scheduling
| Module | Kinds | What it's for |
|---|---|---|
scheduler | Interval, Cron | Runs work on a recurring schedule: every fixed duration, or on a cron expression in a chosen timezone. |
timer | Delay | Waiting as a first-class step: pause for a duration before continuing, anywhere a call fits — between pipeline steps, in a retry backoff, in a handler. |
Security
| Module | Kinds | What it's for |
|---|---|---|
oauth-client | AccessToken, Authorization, AuthorizationServer, Callback, Client, ClientCredentials, Credential, DeviceAuthorization, DeviceToken, GrantClear, GrantRead, GrantWrite, RedirectAwait, RedirectListener, TokenExchange, TokenRefresh, TokenSource | Obtains and keeps delegated access on a user's behalf: drives someone through a consent screen, exchanges the resulting code for tokens, stores the grant, and keeps a valid access token available afte… |
secret-scan | Detector | Find credentials in text before it is written or sent: API keys, access tokens, private keys and other high-entropy secrets, detected by known token prefixes, literal markers and Shannon entropy. |
Storage
| Module | Kinds | What it's for |
|---|---|---|
blob | Store, Put, Get, Head, Delete | Object storage behind one contract: save, read, inspect and delete binary content — uploads, attachments, generated files — addressed by path-like keys and carrying a media type. |
blob-fs | Store | Object storage on a local or mounted directory: uploads, attachments and generated files kept as plain files under one root, each with its media type. |
cache | Store, Lookup, Entry, View | Caching of computed or fetched values under a key, with freshness windows: an entry is fresh for its TTL, then stale for a grace period, then gone. |
cache-memory | Store | In-process cache storage: entries live in the running process's memory with the usual fresh and stale windows, bounded by a maximum entry count. |
cache-redis | Store | Redis-backed caching shared by every instance of an application — cached results and counters that outlive one process, under an optional key prefix so several apps can share a server. |
crud | Model, Resource, Ui | Serves a full REST API over a database table from one declaration: a paginated list with cursor paging, a total count, and filtering and sorting limited to the fields the data model allows, plus read… |
durable-journal-file | Journal | Records durable runs to a directory on disk: one append-only file per run, written and flushed as each step completes, so a process that dies leaves everything already finished on disk. |
durable-journal-postgres | Journal | Records durable runs in two tables on a PostgreSQL database, so several machines can record and recover the same work. |
fs | File, FileWrite, FileEdit, DirectoryListing, DirectoryCreation, TreeSnapshot, TreeSync, FileRemoval | Local filesystem access: read, write, edit in place, list, create and remove files and directories, plus content-hash snapshots and batch tree updates for syncing. |
graph | Store, Node, Relationship, CreateNode, MergeNode, UpdateNode, DeleteNode, GetNode, FindNodes, CreateRelationship, MergeRelationship, UpdateRelationship, DeleteRelationship, FindRelationships, Traverse | A knowledge graph of typed entities and typed links between them: create, upsert, update, delete and look up nodes and relationships by key, filter them by property, and traverse several hops to find… |
graph-layers | Store, RetractNode, RetractRelationship, DraftedStore, OpenDraft, DraftSession, Publish, DiscardDraft, RebaseDraft, ListDrafts, NodeConflicts, RelationshipConflicts, ResolveNodeConflict, ResolveRelationshipConflict, RevisionedStore, ListRevisions, PinBase, UnpinBase, ListBases, LabelRevision | Several knowledge graphs kept as named layers in one database, where a layer can be built on one or many others: what a layer states overrides or hides what lies beneath. |
graph-layers-current-postgres | NodeTable, RelationshipTable, Node, Relationship, Store | Keeps layered knowledge graphs in PostgreSQL with no versioning: every entity type and link type is a table the application declares, shared by all layers, and each layer holds only its current statem… |
graph-layers-current-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store | Keeps layered knowledge graphs in SQLite with no versioning: every entity type and link type is a table the application declares, shared by all layers, and each layer holds only its current statements… |
graph-layers-drafts-postgres | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, DraftsTable | Keeps layered knowledge graphs in PostgreSQL with drafts: every entity type and link type is a table the application declares, shared by all layers, and each layer's changes are staged in a draft and… |
graph-layers-drafts-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, DraftsTable | Keeps layered knowledge graphs in SQLite with drafts: every entity type and link type is a table the application declares, shared by all layers, and each layer's changes are staged in a draft and publ… |
graph-layers-revisions-postgres | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, ChangesetsTable, ChangesetBasesTable | Keeps versioned knowledge graphs in PostgreSQL: every entity type and link type is a table the application declares, shared by all layers, and every published revision of a layer is retained. |
graph-layers-revisions-sqlite | NodeTable, RelationshipTable, Node, Relationship, Store, LayersTable, ChangesetsTable, ChangesetBasesTable | Keeps versioned knowledge graphs in SQLite: every entity type and link type is a table the application declares, shared by all layers, and every published revision of a layer is retained. |
graph-layers-sql | Node, Relationship, CurrentStore, DraftedStore, RevisionedStore | The shared half of keeping layered knowledge graphs in a relational database: the entity-type, link-type and layer-store contracts, the rules that make a table safe to hold several overlaid layers, an… |
graph-sql | Node, Relationship, Store | Stores a knowledge graph in ordinary relational tables: each entity type and each link type is a table the application declares and migrates itself, and the graph is mapped onto them. |
kv-store | Store | Durable key/value storage with atomic conditional writes: read a value with its version token, insert only when the key is absent, replace or delete only when that version still matches. |
kv-store-memory | Store | In-process key/value storage with atomic conditional writes, held in the running process's memory. |
kv-store-redis | Store | Redis-backed key/value storage with atomic conditional writes, shared across every instance of an application and namespaced by a key prefix. |
kv-store-sql | Store | Durable key/value storage with atomic conditional writes, kept in a table on a database you already run. |
postgres | DatabaseAccess, Connection, Table, Enum, Schema | Connects an application to a PostgreSQL database it asks for as a typed need — the address with its credentials, a minimum server version and the extensions it relies on, each verified against the liv… |
record-stream | ExtractText, Tee, EndHandler, OnComplete, JournalStore, MemoryJournalStore, Journal, JournalSink, JournalClaim, JournalSource, JournalRead, JournalRemoval, JournalExpiry | Operations on streams of structured records, whatever the format: project a mixed record stream down to plain text, fan one stream out to two consumers, run a handler exactly once however a stream end… |
record-stream-sql | JournalStore | Keeps resumable stream journals in two tables on a database you already run, so a reader can replay a detached stream after a restart or from another process. |
sql | Connection, Query, Command, Transaction, Selection, Table, Enum, Schema | SQL database access independent of the engine: run queries and mutations with parameters bound safely, build a SELECT from structured parts instead of raw text, group writes into an all-or-nothing tra… |
sql-repository | Read, Create, Update, Delete | Table-level create, read, update and delete handlers that generate their SQL from the shape of the call: filters become a WHERE clause, a data object becomes the column list. |
sqlite | Connection, Table, Enum, Schema | Connects an application to a SQLite database — a file on disk, or an in-memory one that lives only as long as the process — with transactional schema changes. |
vector-store | Store, Record, Match, Removal | Semantic search over an index of vectors: store embeddings with ids and metadata, query for the nearest neighbours of a vector with scores, and delete by id or by a metadata filter. |
vector-store-memory | Store | An in-process vector index ranked by cosine, dot-product or euclidean similarity, held in the running process's memory with no external service to run. |
vector-store-pgvector | Store | A durable vector index kept in PostgreSQL with pgvector, ranked by cosine, dot-product or euclidean distance. |
Streaming
| Module | Kinds | What it's for |
|---|---|---|
channel | Text, SendLine, ReadUntil, End | Holds a conversation with a running program over a line-oriented text channel: read what it printed up to a marker, answer it, read the next thing, and close the input when the exchange is over. |
ndjson-codec | Encoder | Newline-delimited JSON on the wire: a stream of records becomes bytes carrying one JSON document per line, the usual shape for line-oriented log and event feeds that a consumer can read incrementally.… |
record-stream | ExtractText, Tee, EndHandler, OnComplete, JournalStore, MemoryJournalStore, Journal, JournalSink, JournalClaim, JournalSource, JournalRead, JournalRemoval, JournalExpiry | Operations on streams of structured records, whatever the format: project a mixed record stream down to plain text, fan one stream out to two consumers, run a handler exactly once however a stream end… |
record-stream-sql | JournalStore | Keeps resumable stream journals in two tables on a database you already run, so a reader can replay a detached stream after a restart or from another process. |
sse-codec | Decoder, Encoder | Server-Sent Events on the wire: a stream of event records becomes the framed bytes a browser's EventSource reads, one named event per record. |
stream | Of, Collect, Chunk, Map, Scan, FlatMap, Tap, Concat | The ends and the middle of a stream pipeline: turn a list of values into a stream, drain a stream back into a list, re-frame bytes into fixed-size chunks, transform, accumulate or expand values as the… |
Testing
| Module | Kinds | What it's for |
|---|---|---|
assert | ModuleContext, Schema, Events, Manifest, Equals, Matches, Contains | Assertions for manifest tests: deep equality, regular-expression match, substring or membership, JSON Schema conformance, ordered event sequences, a module's resolved variables and secrets, and the di… |
benchmark | Suite | Load and performance benchmarking for any callable resource: drives weighted scenarios at a chosen concurrency for a duration or a request count, discards a warm-up window, and reports latency percent… |
container | Engine, Instance, Port, Readiness, LogReady | Start a disposable container from an image for the lifetime of an application or test — a database, a queue, any service a test needs — wait until it is ready, and read the address its ports are reach… |
docker | Engine | Run disposable containers through a Docker-compatible engine — a local Docker or Podman daemon, or a runner that serves one per session — reached over a unix socket or HTTP(S) with an optional bearer… |
test | Suite | Finds test manifests by glob pattern and runs each one in its own fresh runtime, several at a time, reporting pass and failure per test. The entry point for a project's test suite. |
Transport
| Module | Kinds | What it's for |
|---|---|---|
ai-mcp | ToolProvider, PromptToolProvider | Brings the tools and prompts a connected MCP server offers into an AI agent, so a model can call them like any other tool — a prompt is rendered with the model's arguments and its messages handed back… |
brave | WebSearchEngine | Web search through the Brave Search API, an independent web index: ranked results with title, URL, snippet and page age for a query, with country, language, recency and safe-search settings, paging wi… |
exa | WebSearchEngine | Web search through the Exa Search API, a neural search engine for AI applications: ranked results with title, URL, highlighted excerpts and publication date for a query, with location, recency and con… |
http-client | ApiKeyHeader, BearerToken, Client, Credential, QueryKey, Request | Calls HTTP APIs: any method, with query parameters, headers and a JSON or string body, returning the status, headers and a parsed body. |
http-dispatch | Outcomes, Request | The shared value shapes every HTTP transport anchors against: the canonical request matcher — method, path, query, body, headers — the hostname an entry is selected by, and the rules that render a han… |
http-server | Server, Api, Reference, Static | Serving HTTP: a listener bound to a port with CORS, per-mount request guards for authentication and access checks, and a generated OpenAPI document, routers whose routes validate the request against a… |
kagi | WebSearchEngine | Web search through the Kagi Search API, an ad-free paid search service: ranked results with title, URL, snippet and date for a query, with region, recency and safe-search settings, paging with an opaq… |
mcp-client | Client, SessionProvider, HttpClient, StdioClient, ToolsCall, ToolsList | Talks to Model Context Protocol (MCP) servers: list the tools a server advertises and call one by name, getting back its content blocks, or list its prompts and render one with arguments into messages… |
mcp-server | StdioServer, HttpEndpoint, Tools, Resources, Prompts | Exposes an application to AI clients over the Model Context Protocol: bundle existing resources as callable tools, readable resources and fetchable prompts, then serve them either over standard input… |
multipart | Encoder, Decoder, Reader | Multipart bodies: combine several parts — a JSON document, a file, a form field — into one payload with the boundary framing servers expect, and split a received payload back into its parts — either c… |
searxng | WebSearchEngine | Web search through a self-hosted SearXNG metasearch instance: queries its JSON API with language, recency and safe-search settings and returns ranked results with title, URL, snippet and publication d… |
tavily | WebSearchEngine | Web search through the Tavily Search API, built for AI agents and retrieval: ranked results with title, URL, content snippet and publication date for a query, with language, country, recency and safe-… |
UI
| Module | Kinds | What it's for |
|---|---|---|
ui | Words, Composite, Surface, Overlay, Dialog, Drawer, Popover, InlineSurface, Panel, PageSurface, FilterPlacement, AbovePlacement, AsidePlacement, CollapsiblePlacement, OverlayPlacement, StateStore, LocalStore, SessionStore, View, Table, Form, Action, Filters, Collection, Component, ComponentExport, Theme, Data, Field, InputField, ChoiceField, PickerField, DateRangeField, OptionSource, CollectionOptions | Declarative user interfaces written as data: pages built from layout, text, links and images, records read when a page opens with content shown by condition, data tables with sorting, paging and row a… |
ui-react | App | Serves a declarative user interface as a web application: pages with navigation, data grids with sorting, paging and inline create, edit and delete, validated forms, filter bars, theming with design t… |
Visualization
| Module | Kinds | What it's for |
|---|---|---|
font | Family, Measure | Declaring a typeface once and using it everywhere it is needed: the family name written into markup, a document's font table and a stylesheet, plus the face bytes a renderer embeds or serves. |
svg-chart | Chart, Cartesian, Pie, Donut, Bar, Line, Area, Scatter | Turning rows of data into a chart, as SVG markup: pie and donut, bar and stacked bar, line, area and scatter, with axes, scales, gridlines, a legend and formatted labels. |
Beyond the standard library
The list above is what ships from the Telo repository. It is not the whole ecosystem: connectors (AWS Lambda, S3, …) and third-party modules are published from their own repositories and indexed on the hub alongside these. Any module you publish yourself is discovered the same way — see Authoring a module.