@martin0309205/prism
v0.2.26
Published
Thin connector around Claude Code: Slack/HTTP/CLI surfaces that spawn `claude -p` and ship back the files Claude creates.
Readme
Prism
Mnemos remembers. Prism delivers.
Prism is a thin connector around Claude Code. It listens for a request (Slack mention, HTTP call, or CLI invocation), spawns claude -p "<prompt>" in a working directory that has the right skills available, lets Claude do its job (query the brain, look up brand tokens, generate the artifact), then ships the output files back to the caller.
That's the whole product. No custom LLM client. No custom skill format. No custom brain client.
Architecture
surfaces runner
┌────────────┐ ┌──────────────────────┐
│ Slack bot │────┐ │ │
├────────────┤ │ │ spawn 'claude -p' │
│ POST /api/ │────┼───▶│ in temp workdir │
│ generate │ │ │ │
├────────────┤ │ │ capture new files │
│ CLI │────┘ │ in cwd after exit │
└────────────┘ └──────────────────────┘
│
▼
Claude Code (the LLM)
│
~/.claude/skills/:
├─ ask-mnemos-astry
├─ astry-design-system
├─ astry-pdf
└─ ...Install
npm install -g prism
prism onboardprism onboard walks through:
- Picking an instance name
- Slack Socket Mode tokens (optional)
- HTTP API key (optional)
- Brain endpoint + key (read by
ask-mnemos-astryskill) - Verifying
claudeis onPATHand authenticated
Usage
CLI
prism generate "fais un PDF récap du meeting Endemol" --out ./HTTP
curl -X POST http://localhost:18790/api/generate \
-H "Authorization: Bearer prism_live_..." \
-H "Content-Type: application/json" \
-d '{"brief": "fais un récap du meeting Endemol kickoff du 6 mai"}'Slack
Mention @prism in any channel the bot has access to:
@prism fais-moi un PDF du meeting Endemol de ce matinWeb dashboard
Prism ships a Next.js dashboard at http://127.0.0.1:18791 (configurable
via web.port in config.yaml). It exposes the job log
(<instance>/jobs/jobs.jsonl), instance config, system update flow, and
a generate UI.
prism web # opens the local URL (or prints SSH-tunnel cmd if remote)
prism web status # bind/port/token/service state
prism web --restart # systemctl --user restart prism-web@<inst>.service
prism web upgrade # refresh dashboard files from the bundled package
prism web upgrade --restart # ...and bounce the service
prism web expose --domain prism.astry.agency # Caddy reverse-proxy (Linux only)
prism web unexpose # remove the Caddy snippet
prism token --show # print PRISM_DASHBOARD_TOKEN
prism token --rotate # mint a new 32-byte token (also restarts the service)The dashboard server reads two env files at boot (loaded by
prism-web@<inst>.service):
<inst>/.env— secrets, includingPRISM_DASHBOARD_TOKEN<inst>/dashboard/.env— runtime params (PORT,HOSTNAME,PRISM_INSTANCE_DIR,PRISM_INSTANCE)
There are no default credentials. The first user is created via
/setup on the dashboard (or by a separate SSO mode — see the systemd
unit for the ASTRY_USERS_PATH / ASTRY_SSO_* env vars to uncomment).
Deploy a new instance
ssh root@<vps>
prism update # install/refresh the package
prism onboard -i default # wizard creates ~/.prism/instances/default/
prism daemon install -i default # registers [email protected] AND [email protected]
systemctl --user start prism-web@default
prism web expose --domain prism.astry.agencyRequired skills (operator install)
Prism does not ship skills. The operator installs them under the user that runs Prism:
ls ~/.claude/skills/
# ask-mnemos-astry/
# astry-design-system/
# astry-pdf/prism doctor reports which expected skills are missing.
License
UNLICENSED — internal Astry tooling.
