First-party packages for Sema, published to
the registry under the official sema account. This is a monorepo: each
sema-*/ directory is an independent package (its own sema.toml, version, and
tests) with no cross-dependencies. Install any of them with:
sema pkg add sema-<name>Service wrappers for the things LLM and agent builders reach for — RAG, memory, tools, media. All are thin REST clients over Sema's HTTP + JSON stdlib.
| Package | Description |
|---|---|
sema-firecrawl |
Scrape, crawl, map, and search the web through the Firecrawl API |
sema-tavily |
Web search and content extraction tuned for LLMs (Tavily) |
sema-exa |
Neural/semantic web search and page contents (Exa) |
sema-qdrant |
Vector store: collections, upsert, filtered search (Qdrant REST) |
sema-upstash-vector |
Connectionless HTTP-native serverless vector store (Upstash) |
sema-mem0 |
Long-term memory for agents: add, search, manage (Mem0) |
sema-replicate |
Run hosted models: create predictions, poll, fetch outputs (Replicate) |
sema-elevenlabs |
Text-to-speech + voices; returns audio bytes (ElevenLabs) |
sema-unstructured |
Documents → structured elements for RAG (Unstructured.io) |
sema-graphql |
Minimal generic GraphQL client (queries + mutations over HTTP) |
sema-cdp |
Chrome DevTools Protocol client: launch, connect, send commands, wait for events |
sema-browser |
Drive a real browser over CDP: navigate, click, fill, screenshot, agent-facing snapshots |
Embeddings, reranking, and classification are built into Sema (
llm/embed,llm/rerank,llm/classify— Cohere/Jina/Voyage/OpenAI providers), so there's no package for those.
| Package | Description |
|---|---|
sema-policies |
Reusable least-privilege, content-safety, output, and workflow-evidence policies |
sema-medley |
Utility belt: map/list transformations the stdlib doesn't cover |
sema-strings |
Case conversion, slugs, padding, wrapping, string distance |
sema-test |
Test framework — define, run, and report tests |
sema-validate |
Schema validation for maps and data structures |
sema-config |
Layered config: files, env vars, profiles, reference expansion |
sema-dotenv |
Parse .env files and load environment variables |
sema-log |
Leveled, structured logging with pluggable appenders |
sema-retry |
Retry with exponential backoff, circuit breaker, rate limiting |
sema-cache |
TTL/LRU caching, memoization, optional persistent kv stores |
sema-cli |
CLI argument parsing: flags, options, subcommands |
sema-url |
URL parsing, building, resolving, query-string manipulation |
sema-html |
S-expression → HTML generation, Hiccup-style |
sema-fmt |
Pretty-printing, table formatting, tree rendering |
sema-frida |
Bounded Frida inventory and native persistent observation |
| Package | Description |
|---|---|
sema-github |
GitHub REST API v3 client with pagination and typed errors |
sema-asana |
Asana REST API (v1): tasks, projects, workspaces, comments |
Conventions every package follows are in STYLE.md. To start a new
package, copy package-template/ and run its
scaffold.sema (see SCAFFOLD.md).
./test-all.sh # link every package into the cache and run all test suites
./publish-all.sh # publish each package at its current version (after login)test-all.sh copies the local packages into ~/.sema/packages/ first (the
resolver rejects symlinks), so short-name imports like (import "sema-test")
resolve during development.
Packages are published to the registry under the sema account (which grants
the "Official" badge). Bump version in a package's sema.toml and add a
CHANGELOG.md entry for each release, then:
sema pkg login --token <token> # token for the sema account
./publish-all.sh # immutable versions are skippedEvery package is MIT.