
Research
TeamPCP Compromises Telnyx Python SDK to Deliver Credential-Stealing Malware
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.
image-sprout
Advanced tools


Image Sprout is a local image-generation tool for building consistent outputs from reference images and reusable instructions.
Without a tool like this, you end up repeating the same context over and over:
Image Sprout turns that repeated context into a project you can reuse.
It runs in two modes over the same local project data:
Most image-generation tools are prompt-first. That works for one-off outputs, but it breaks down when you need consistency.
Image Sprout gives you a project with:
Visual StyleSubject GuideInstructionsThat lets you set up the context once, then keep generating and iterating without rebuilding it from scratch each time.
This video shows creating the project setup by adding a general reference image and deriving both the style and subject guide:
This video shows generating images from a project that already has its style and subject guide, then iterating on the results:
Install Image Sprout globally from npm:
npm install -g image-sprout
If you prefer not to install globally, you can also run it with npx image-sprout.
If you want to work from source instead, clone the repo and install dependencies locally:
git clone <repo-url>
cd image-sprout
npm install
From the repo checkout, you can run the app with the local scripts or run the built CLI directly.
If you're using an AI agent runtime, install the skill instead of the CLI:
ClawHub (OpenClaw):
npx clawhub@latest install image-sprout
Or if the ClawHub CLI is already installed:
clawhub install image-sprout
tmc-marketplace (Claude Code / Codex):
claude plugin add tmchow/tmc-marketplace/plugins/image-sprout
Manual: point your agent at the skill file directly. This won't auto-update when new versions are released.
You can use either mode.
Launch the local web app:
image-sprout web
This starts the interactive local app backed by the same on-disk store the CLI uses.
Pass --open to automatically open the app in your default browser:
image-sprout web --open
Pass --port to use a custom port (default is 4310):
image-sprout web --port 8080
Run CLI commands directly:
image-sprout help
Image Sprout requires your own OpenRouter API key.
image-sprout config set apiKey <your-openrouter-key>
Useful config commands:
image-sprout config show
image-sprout config get model
image-sprout config path
Notes:
config show and config get apiKey do not print the raw API key--json for machine-readable outputOpen the app with image-sprout web.
If the API key is missing, the app will prompt you to set it. You can also manage it from the settings flow inside the app.
Image Sprout defaults to Nano Banana 2 (google/gemini-3.1-flash-image-preview).
You can also add other OpenRouter models, but Image Sprout only accepts models that:
Use the gear icon next to the model selector.
From there you can:
image-sprout model list
image-sprout model add openai/gpt-5-image
image-sprout model set-default google/gemini-3.1-flash-image-preview
image-sprout model restore-defaults
Guide derivation uses a separate analysis model. The default is google/gemini-3.1-flash-image-preview.
To use a different model for derivation:
image-sprout config set analysisModel <openrouter-model-id>
You can also override it per-command:
image-sprout project derive my-blog --target both --analysis-model google/gemini-2.5-flash
The general workflow is:
Use these fields intentionally:
Visual Style: how outputs should lookSubject Guide: what subject identity should stay consistentInstructions: persistent generation instructions that should apply every timeExamples for Instructions:
Open the web app and create a new project.
Best practice:
Default behavior:
Visual Style and Subject GuideAdvanced behavior:
Common cases:
style only: you want consistent look, but subjects can varysubject only: you want consistent subject identity, but style can varyboth: you want both look and subject consistencyIn Project Settings, derive the guides you actually need:
Derive StyleDerive SubjectDerive Style + SubjectRecommended mapping:
When deriving both guides from different reference sets, both analyses run in parallel.
Review the derived text before saving it.
Project Settings does not auto-save guide edits. Save after:
Once the project is configured, generate from the main canvas.
The main prompt is the per-run request. The image count can be 1, 2, 4, or 6.
Examples:
a flower in a forestthe same character sitting at a cafe in morning lightproduct shot on a neutral tabletop with more negative spaceAfter a run:
IterateRun Again when you want another take on the same run without changing the promptimage-sprout project create my-blog
Add at least 3 references. By default, refs apply to both style and subject:
image-sprout ref add --project my-blog ./ref-1.png ./ref-2.png ./ref-3.png
If you need separate pools:
image-sprout ref add --project my-blog --role style ./style-1.png ./style-2.png
image-sprout ref add --project my-blog --role subject ./subject-1.png ./subject-2.png
image-sprout project update my-blog --instructions "Bottom right corner should say 'My Blog' in a legible but subtle watermark."
Then derive the right guide or guides.
Style only:
image-sprout project derive my-blog --target style
Subject only:
image-sprout project derive my-blog --target subject
Both:
image-sprout project derive my-blog --target both
Inspect readiness:
image-sprout project status my-blog
image-sprout project generate my-blog --prompt "a flower in a forest"
Generate a single image:
image-sprout project generate my-blog --prompt "a flower in a forest" --count 1
image-sprout session list --project my-blog
image-sprout run list --project my-blog
image-sprout run latest --project my-blog --json
image-sprout session delete --project my-blog <session-id>
Deleting a session removes the session and all of its runs and generated images.
For convenience, generate and analyze are available as top-level aliases:
image-sprout generate --project my-blog --prompt "a flower in a forest"
image-sprout analyze --project my-blog --target both
These are shorthand for project generate and project derive, respectively.
Image Sprout ships skill files so AI agents can use the full workflow — project setup, reference management, guide derivation, generation, and result inspection — without additional documentation. See Install As An Agent Skill for setup.
| Runtime | Path | Distribution |
|---|---|---|
| OpenClaw / ClawHub | skills/openclaw/SKILL.md | Published to ClawHub directly |
| Claude Code + Codex | skills/agents/SKILL.md | Via tmc-marketplace plugin |
The CLI is the better mode for AI agents because it:
--json for machine-readable outputExamples:
image-sprout project show my-blog --json
image-sprout project status my-blog --json
image-sprout run latest --project my-blog --json
image-sprout help
image-sprout project --help
image-sprout ref --help
image-sprout session --help
image-sprout model --help
image-sprout config --help
The following config keys are available:
| Key | Description | Default |
|---|---|---|
apiKey | OpenRouter API key | (empty) |
model | Default generation model | google/gemini-3.1-flash-image-preview |
sizePreset | Default image aspect ratio (16:9, 1:1, 9:16) | 16:9 |
imageCount | Default number of images per run (1, 2, 4, 6) | 4 |
analysisModel | Model used for guide derivation | google/gemini-3.1-flash-image-preview |
image-sprout config show
image-sprout config set <key> <value>
image-sprout config get <key>
image-sprout config unset <key>
image-sprout config path
For local repo development:
npm install
npm run dev # Vite dev server
npm run build # Build the web app
npm run build:cli # Build the CLI
npm run web # Build web + CLI, then launch local web mode
npm run check # Svelte + TypeScript checks
npm test # Run all tests
npm run test:watch # Watch tests
CLI commands -----------\
> shared on-disk project/config/model store
Local web app -----------/
Important implementation pieces:
src/cli/project-store.ts — shared disk-backed persistencesrc/cli/model-registry.ts — shared model registrysrc/cli/web-server.ts — local bridge for the web appsrc/lib/api/openrouter.ts — generation and guide derivationsrc/lib/stores/*.svelte.ts — bridge-backed web stateFAQs

The npm package image-sprout receives a total of 0 weekly downloads. As such, image-sprout popularity was classified as not popular.
We found that image-sprout demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.

Security News
TeamPCP is partnering with ransomware group Vect to turn open source supply chain attacks on tools like Trivy and LiteLLM into large-scale ransomware operations.

Security News
/Research
Widespread GitHub phishing campaign uses fake Visual Studio Code security alerts in Discussions to trick developers into visiting malicious website.