oira666_pi-image-generation
Image generation and reference-image editing for pi.
Package details
Install oira666_pi-image-generation from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:oira666_pi-image-generation- Package
oira666_pi-image-generation- Version
0.1.0- Published
- Nov 5, 2026
- Downloads
- 500/mo · 226/wk
- Author
- oira666
- License
- MIT
- Types
- extension
- Size
- 42.8 KB
- Dependencies
- 1 dependency · 2 peers
Pi manifest JSON
{
"skills": [],
"extensions": [
"./src/index.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-image-generation
Tested against Pi 1.5.0.
pi install npm:oira666_pi-image-generation
Generate and edit PNG images with GPT Image 2.6 using the image_gen tool. Without settings, the extension uses the stored openai-codex subscription login, as before.
Model selection
Sunburst (gpt-image-2.6-sunburst) is the default for better quality. Flare (gpt-image-2.6-flare) is faster but lower quality. The agent should use Flare only when you explicitly ask for Flare or faster generation, never as an automatic fallback.
The optional model argument applies to both generation and reference-image editing:
{
"prompt": "A blue ceramic vase on a white background",
"model": "gpt-image-2.6-flare"
}
Omit model to use Sunburst. The extension sends the full model ID instead of relying on the unspecified gpt-image-2.6 alias.
Credentials
Create ~/.pi/agent/pi-image-generation-settings.json to choose a different OpenAI provider registered in pi:
{
"provider": "openai-dmitry"
}
Pi resolves the selected provider's credentials and manages OAuth refresh. A Codex subscription alias uses the ChatGPT image backend. A provider resolving an OpenAI API key uses the OpenAI Images API.
Alternatively, supply a literal OpenAI API key (billed to your OpenAI API account):
{
"apiKey": "sk-your-openai-api-key"
}
Use exactly one of provider or apiKey. Empty, malformed, unreadable, or ambiguous settings disable image generation with a warning; they never fall back to another account. API keys are literal strings, not shell commands or environment-variable expressions.
Project overrides
In a trusted project, settings are checked in this order (first existing file wins):
.pi/agent/pi-image-generation-settings.json.pi/pi-image-generation-settings.json(standard pi project config directory)~/.pi/agent/pi-image-generation-settings.json
Project settings replace the whole global file, so a project provider does not inherit a global API key. Untrusted projects use only global settings. PI_CODING_AGENT_DIR overrides the global agent directory.
Run /reload after changing settings or logging in to update tool and skill availability. Credentials are also checked again on each tool call. The active conversation model can use any provider.
Only OpenAI credentials are supported: selected subscription providers must have a https://chatgpt.com base URL, and API-key providers a https://api.openai.com base URL. Other or unknown origins are rejected to avoid sending another service's credentials to OpenAI. Image requests use fixed OpenAI endpoints, not custom provider paths or headers. There is no automatic fallback between accounts or services.
Keep API-key settings private (chmod 600 <settings-file>) and do not commit them to source control. Image prompts and supplied references are uploaded to the selected image service.
Development
npm ci
mkdir -p tmp
TMPDIR="$PWD/tmp" npm test
npm pack --dry-run --ignore-scripts
npm test installs the direct Pi development dependency at @latest with install scripts disabled, then runs npm run check and the tests. Tests target only the latest npm Pi release. Before each release, update the tested version above and the Pi peer dependency baseline after all checks pass. No lint command is configured.
Tests use mocked image responses and real Pi resource loaders and tool contexts. They protect credential isolation, skill discovery, and generate/edit workflows, not artwork quality. They do not send live image requests or separately execute README snippets.
For the full Evergreen suite, including a live-model e2e run:
EVERGREEN_E2E_MODEL=provider/model npm run test:evergreen
E2E runs the globally installed $EVERGREEN_PI_BIN (default: pi on PATH) with stdin ignored, isolated settings and sessions, and a disposable copy of your model credentials/catalog. Model calls use $EVERGREEN_E2E_MODEL; image-service responses are mocked to avoid image charges. See EVERGREEN.md for intent and compatibility risks.