@sellable/install
v0.1.710
Published
One-command installer for Sellable MCP in Claude Code, Codex, and Hermes
Downloads
65,504
Readme
Sellable Installer
Installs Sellable MCP for Claude Code, Codex, and Hermes.
curl -fsSL "https://app.sellable.dev/api/v2/cli/install" | shPaste that command in your terminal, not inside the Codex chat. It downloads a
reviewable bootstrapper that installs or reuses Node >=20, runs
@sellable/install, and verifies the Sellable MCP runtime.
Windows users can use PowerShell or Windows Terminal:
iwr "https://app.sellable.dev/api/v2/cli/install.ps1" | iexAfter install, restart Codex Desktop, Claude Code, or Hermes so Sellable MCP
tools and skills reload. In an active Hermes session, /reload-mcp and
/reload-skills can reload the new config.
Verify the runtime tools with:
sellable --verify-only --host all --json --artifact "$HOME/.local/sellable/app-sellable-dev/installer/.last-verify.json"After install, sellable create is a terminal helper that prints the correct
agent command for launching a campaign:
sellable createCampaign creation, sender send refills, foundation memory, content capture/ideation, and post drafting run inside Claude Code, Codex, or Hermes, where the Sellable MCP tools and approval flows are available.
Install is auth-free by default. The normal path is first-run login: launch a Sellable workflow in Claude Code, Codex, or Hermes and the agent handles Sellable sign-in with a browser magic-link handoff.
The installer uses package stdio MCP by default:
npm exec --yes --package @sellable/mcp@latest -- sellable-mcpThat keeps new Claude Code/Codex/Hermes MCP starts on the latest stable package. The
MCP server also checks npm at startup and during get_auth_status, caching the
result at ~/.sellable/update-check.json so users are prompted to rerun the
latest installer only when an update is actually available.
Agents should use the agent-readable handoff instead of guessing commands:
Install Sellable CLI and skills using https://app.sellable.dev/agent-install.txtThe direct npm installer is only a package-level troubleshooting fallback for maintainers. Public installs should keep using the curl endpoint above because it bootstraps Node, repairs legacy state, installs skills, and runs runtime verification in one path:
curl -fsSL "https://app.sellable.dev/api/v2/cli/install" | shFor scripted fallback after browser login, paste the command shown by Sellable:
sellable auth set <token> --workspace-id <workspace_id>For CI/env-only installs, operators can still pass --token / SELLABLE_TOKEN
plus --workspace-id / SELLABLE_WORKSPACE_ID. Do not use env vars as the
primary human setup path.
Auth is stored once at:
~/.sellable/config.jsonHermes Profile-Scoped Installs
For a single local Hermes profile, point Sellable auth and memory at the profile
instead of the global ~/.sellable/config.json:
profile="$HOME/.hermes/profiles/acme"
sellable --host hermes \
--sellable-config-path "$profile/sellable/config.json" \
--sellable-configs-dir "$profile/sellable/configs"That writes SELLABLE_CONFIG_PATH and SELLABLE_CONFIGS_DIR into
mcp_servers.sellable.env, so first-run login, get_auth_status, workspace
switches, and Sellable memory all use the same profile-local files. Hosted MCP
mode does not receive local filesystem paths.
For zero-shot local or Hostinger/Linux VPS bootstrap, use the profile command:
sellable hermes profile bootstrap \
--profile acme \
--profiles-root /srv/hermes/profiles \
--workspace-id ws_acme \
--workspace-name Acme \
--token-file /run/secrets/sellable-acme-token \
--jsonIt creates:
/srv/hermes/profiles/acme/config.yaml
/srv/hermes/profiles/acme/sellable/config.json
/srv/hermes/profiles/acme/sellable/configs/
/srv/hermes/profiles/acme/skills/sellable/
/srv/hermes/profiles/acme/.env # only when Slack token inputs are suppliedBootstrap also writes SELLABLE_LOCK_WORKSPACE_ID=<workspace-id> and
SELLABLE_REQUIRE_WORKSPACE_LOCK=1 into the profile's Hermes MCP env.
Customer profiles are therefore locked to their own Sellable workspace:
Sellable MCP requests are forced to that workspace, workspace switching/creation
is blocked, workspace listings are filtered, and a missing lock fails closed
instead of falling back to shared/admin config. Use the sellable-admin profile
for provisioning or cross-profile inspection.
See HERMES-SLACK-PROFILE-SCOPING.md for
the customer Slack isolation contract and Socket Mode token requirements.
If no token is supplied, bootstrap still creates a pending
sellable/config.json so the profile path is concrete from the first MCP
launch. Finish auth with:
sellable auth set <token> --workspace-id <workspace_id> \
--sellable-config-path /srv/hermes/profiles/acme/sellable/config.jsonSlack Socket Mode tokens can be written profile-locally:
sellable hermes profile bootstrap \
--profile acme \
--profiles-root /srv/hermes/profiles \
--workspace-id ws_acme \
--slack-bot-token "$SLACK_BOT_TOKEN" \
--slack-app-token "$SLACK_APP_TOKEN"The Slack app must also be configured for inbound Socket Mode delivery. Outbound
Slack Web API sends can work before this is complete, but Hermes will not hear
mentions until the app has Socket Mode enabled, an app-level token with
connections:write, bot scopes/events for app_mention plus channel/group/IM
message events, and a fresh workspace reinstall after scope or event changes.
Scope the profile to its customer channel at install time:
sellable hermes profile bootstrap \
--profile acme \
--profiles-root /srv/hermes/profiles \
--workspace-id ws_acme \
--slack-bot-token "$SLACK_BOT_TOKEN" \
--slack-app-token "$SLACK_APP_TOKEN" \
--slack-home-channel C0ACME12345 \
--slack-home-channel-name sellable-acme \
--slack-allowed-users U0OPERATOR1 \
--slack-require-mention trueWhen --slack-home-channel is supplied without
--slack-allowed-channels, bootstrap writes
SLACK_ALLOWED_CHANNELS=<home-channel-id> too. That fail-closes a customer
profile to the intended channel by default. Use
--slack-allowed-channels C...,G... only when a profile is deliberately allowed
to listen in multiple channels. Pass channel IDs, not #channel-name, and use
separate Slack bot/app tokens per customer profile when you need hard isolation
between concurrently listening Hermes profiles.
Customer profiles should use customer-scoped Sellable credentials. A shared
Sellable admin token can work for internal admin automation, but it is weaker
isolation and should not be the default for customer profiles. After changing
Hermes profile config, restart the gateway/session or run /reload-mcp and
/reload-skills.
Validate the active profile with the same path inputs:
SELLABLE_CONFIG_PATH=/srv/hermes/profiles/acme/sellable/config.json \
SELLABLE_CONFIGS_DIR=/srv/hermes/profiles/acme/sellable/configs \
sellable --verify-only --host hermes --json \
--artifact /srv/hermes/profiles/acme/sellable/verify-runtime.jsonClaude Code, Codex, and Hermes are configured to launch the same packaged MCP server. The
installer also writes Sellable agent definitions from the packaged agents/
registry, but normal create-campaign runs use only the Message Drafting
background agent (post-find-leads-message-scout). Source discovery and
filter/rubric setup stay in the parent thread with product-native MCP tools.
get_post_find_leads_scout_registry returns the Message Drafting worker for the
normal path; get_source_scout_registry intentionally returns no custom
source-scout agents.
Names
Use the same public entrypoints across supported hosts:
- Claude Code:
/sellable:create-campaign - Claude Code:
/sellable:find-leads - Claude Code:
/sellable:create-ab-test - Claude Code:
/sellable:create-evergreen-campaigns - Claude Code:
/sellable:foundation - Claude Code:
/sellable:content - Claude Code:
/sellable:create-post - Claude Code:
/sellable:refresh-sender-engagement - Claude Code:
/sellable:refill-sends - Codex:
$sellable:create-campaign - Codex:
$sellable:find-leads - Codex:
$sellable:create-ab-test - Codex:
$sellable:create-evergreen-campaigns - Codex:
$sellable:foundation - Codex:
$sellable:content - Codex:
$sellable:create-post - Codex:
$sellable:refresh-sender-engagement - Codex:
$sellable:refill-sends - Hermes:
/sellable-create-campaign - Hermes:
/sellable-find-leads - Hermes:
/sellable-create-ab-test - Hermes:
/sellable-create-evergreen-campaigns - Hermes:
/sellable-foundation - Hermes:
/sellable-content - Hermes:
/sellable-create-post - Hermes:
/sellable-refresh-sender-engagement - Hermes:
/sellable-refill-sends - Codex Desktop plugin:
sellable@sellable - Codex visible skill:
Sellable Create Campaign - Codex visible skill:
Sellable Find Leads - Codex visible skill:
Sellable Create A/B Test - Codex visible skill:
Sellable Create Evergreen Campaigns - Codex visible skill:
Sellable Foundation - Codex visible skill:
Sellable Content - Codex visible skill:
Sellable Create Post - Codex visible skill:
Sellable Refresh Sender Engagement - Codex visible skill:
Sellable Refill Sends - Internal MCP workflow prompt:
create-campaign-v2 - Internal MCP workflow prompt:
find-leads-v2 - Internal MCP workflow prompt:
refill-sends-workflow - Internal/backward-compatible memory prompt:
interview
Do not ask users to run /sellable:create-campaign-v2,
$sellable:create-campaign-v2, $sellable:load-voice, or
$sellable:sellable:create-campaign. Do not ask Hermes users to run
/sellable:create-campaign; use /sellable-create-campaign. create-campaign-v2 is loaded internally
by the campaign skill. foundation is the preferred entrypoint for durable
founder/company memory. content is the preferred entrypoint for adding
transcripts, recurring ideas, and post seeds. create-post remains a supported
direct drafting shortcut and loads voice internally, so there is no separate
public voice-loading command.
Structured Questions
Claude Code uses AskUserQuestion. Codex uses request_user_input when that
tool is exposed in an interactive session. The installer enables Codex Default
mode support by writing default_mode_request_user_input = true under
[features] in ~/.codex/config.toml. codex exec is non-interactive, so it
cannot show the structured questionnaire UI.
Hermes skills use plain chat for setup and approval questions unless a
Hermes-native approval tool is visible in the current session. Hermes exposes
Sellable MCP tools as mcp_sellable_<tool>, for example
mcp_sellable_get_auth_status, mcp_sellable_start_cli_login, and
mcp_sellable_wait_for_cli_login.
For Codex Desktop, the installer also writes a local Sellable plugin bundle into
~/.sellable/codex-marketplace, includes the Sellable skill entrypoints, and
enables it in ~/.codex/config.toml.
Create-Campaign Soul
The create-campaign workflow includes a SOUL.md identity for the Sellable
campaign GTM engineer. It keeps the UX focused on launching a campaign: quick
setup questions, campaign brief, lead sourcing, message review, and approval.
It uses the phrase quick question panel for structured intake and approvals.
It also tells the agent not to expose prompt-loading, MCP, plugin-cache, or tool
names in normal customer-facing progress updates.
The installer writes compatibility cache aliases for recent Codex plugin versions so stale Desktop skill links resolve to the current wrapper instead of showing file/version debugging to the user.
If only one host is installed, --host all installs the available host and tells you how to add the others later.
