AI service marketplace CLI — search, install, and manage AI-ready services with automatic strategy selection and dependency resolution.
Default hub: https://morphso.toji.homes
To use your own hub: sethub_urlin~/.morphso/config.yaml.
curl -fsSL https://morphso.toji.homes/install | shDownloads a pre-built binary for your OS/arch (macOS/Linux, amd64/arm64). Falls back to go install if no binary is available, and installs Go automatically if needed. PATH is registered for bash/zsh/fish.
Download the latest binary from Releases, extract, and place it in your PATH:
# Example for Linux amd64 — replace version and platform as needed
VERSION=$(curl -fsSL https://api.github.com/repos/tojiuni/morphso/releases/latest | grep '"tag_name"' | sed 's/.*"v\([^"]*\)".*/\1/')
curl -fsSL "https://github.com/tojiuni/morphso/releases/download/v${VERSION}/morphso_${VERSION}_linux_amd64.tar.gz" | tar -xz
sudo mv morphso /usr/local/bin/go install github.com/tojiuni/morphso@latestRequires Go 1.21+.
morphso login # authenticate (ZITADEL Device Flow)
morphso search gopedia # find packages
morphso info gopedia # details + resource requirements
morphso install gopedia # install — deps resolved automatically
morphso list # installation history
morphso remove gopedia # uninstallThe --docker strategy brings up a self-contained Compose stack — gopedia plus its
datastores (PostgreSQL, Qdrant, TypeDB) on one network. You do not provision the
datastores yourself; the stack does it, and the DB schema is auto-initialized on first start.
# OPENAI_API_KEY is required (embeddings for ingest + semantic search).
OPENAI_API_KEY=sk-... \
GOPEDIA_HTTP_PORT=18799 \
morphso install gopedia --docker --yesNo login required.
--dockerreads public hub endpoints, somorphso loginis optional (it only adds hub-tracked install history).
After it finishes:
curl -s http://127.0.0.1:18799/api/health # all deps okProviding OPENAI_API_KEY (pick one — the install warns if it is missing):
# 1) config template (recommended for --yes)
morphso install gopedia --docker --template # writes ./gopedia.env from the hub template
# edit gopedia.env → set OPENAI_API_KEY=sk-...
morphso install gopedia --docker --yes --config gopedia.env
# 2) environment variable
OPENAI_API_KEY=sk-... morphso install gopedia --docker --yesWithout a key, ingest runs but stores no vectors (Qdrant stays empty) and search fails.
Useful env vars (passed through to the generated Compose):
| Var | Default | Purpose |
|---|---|---|
OPENAI_API_KEY |
— | Required. Embeddings for ingest + search. |
GOPEDIA_HTTP_PORT |
8787 |
Host port for the gopedia API. |
GOPEDIA_LOG_LEVEL |
info |
debug for verbose logs. |
GOPEDIA_DB_AUTO_INIT |
true |
Create the DB schema on start (idempotent). |
GOPEDIA_INGEST_DIR |
~/.morphso/gopedia/ingest |
Host dir mounted at the container's /ingest. |
Ingest uses container paths: place files under $GOPEDIA_INGEST_DIR and ingest
/ingest/<subdir>. See docs/example-gopedia.md for k8s/native
strategies and full details.
| Command | Description |
|---|---|
login / logout |
Authenticate via ZITADEL Device Flow |
whoami |
Show the current authenticated user |
search <query> |
Search packages |
info <package> |
Package details, dependencies, resource summary |
install <package[@version]> |
Install with AI-recommended strategy; resolves deps |
remove <package> |
Uninstall a package |
list |
Show installation history (hub-tracked) |
~/.morphso/config.yaml is created on first login:
hub_url: https://morphso.toji.homes # override with --hub-url flag
token: <set automatically by login>Override for a single command: morphso search foo --hub-url http://localhost:18080