Glass is my personal Clojure grab bag for building services, tooling, and integrations.
It collects small namespaces I reuse across projects for common data work, runtime helpers, and external system adapters.
Glass is primarily for my own use.
The repo is public, but it is not intended to provide a stable public API. Namespaces, behavior, and dependency choices may change or break at any time.
Glass is currently consumed as a Git dependency.
sudorock/glass {:git/url "https://github.com/sudorock/glass"
:git/sha "ad28c756a8d5ed1a67c9346e9d9be770ee8504ab"}Pin to the commit or tag you want to depend on.
The code currently falls into three broad groups.
General-purpose namespaces for data and text shaping, JSON, keywords, timestamps, URLs, UUIDs, exception data, and fractional indexing.
Reusable helpers for HTTP, shell execution, templating, scheduling, logging, Python interop, and Integrant/Aero-based system setup.
Optional integrations for MCP servers, OpenAI, Qdrant, and Datascript with SQLite persistence.
The current namespace layout follows a simple split:
- Keep broadly reusable code in
glass.* - Keep service adapters in
glass.service.* - Keep database adapters in
glass.db.* - Keep MCP-specific code in
glass.mcp.*
This is only a rough organizing principle, not a stability promise.
Glass uses deps.edn.
Check outdated dependencies with:
clojure -M:outdatedSome namespaces depend on external runtimes or services.
- Python interop expects a Python executable with
tiktokeninstalled - Integration namespaces may require service credentials or a running local service
For local Python setup in this repo:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtGlass is available under the MIT License. See LICENSE.