Bundle
dsh-nanobananapro
Generate images and videos in DeepSeek Harness through the NanoBananaPro API
- Source
- synmindai
- stars
- 1 stars
- License
- MIT
- Updated
- Updated 5 days ago
Readme
# NanoBananaPro for DeepSeek Harness
[](https://www.npmjs.com/package/dsh-nanobananapro)
[](https://github.com/deepseek-ai/deepseek-harness)
[](./LICENSE)
`dsh-nanobananapro` adds native image and video generation to DeepSeek Harness
through the NanoBananaPro public API. It uses a user-owned NanoBananaPro API key;
provider, billing, database, and storage credentials stay on the NanoBananaPro
service.
Tools:
- `nanobananapro_generate_image`
- `nanobananapro_generate_video`
- `nanobananapro_get_task`
- `nanobananapro_get_balance`
- `nanobananapro_account_help`
[中文说明](./README.zh-CN.md)
## Account, API key, and recharge
1. Sign in at <https://api.bananapro.site>.
2. Buy **API credits** at <https://api.bananapro.site/api-pricing>.
3. Create an API key at <https://api.bananapro.site/api-keys>.
4. Keep the key private. Set it in the environment that launches Harness:
```bash
export NANOBANANAPRO_API_KEY='sk-...'
```
5. Restart Harness and ask it to call `nanobananapro_get_balance`.
NanoBananaPro has separate web-playground and API wallets. This plugin consumes
the **API** wallet, so purchasing ordinary web credits does not fund API calls.
The balance tool returns both values and the correct recharge link.
Official API documentation: <https://api.bananapro.site/api-docs>
## Install
```bash
npx -y @deepseek-ai/dsh plugin --profile web add dsh-nanobananapro
npx -y @deepseek-ai/dsh --profile web --dump-config
npx -y @deepseek-ai/dsh web --profile web
```
The config dump should contain a `nanobananapro` bundle layer.
To install a cloned checkout instead:
```bash
npx -y @deepseek-ai/dsh plugin --profile web add .
```
## Try it
```text
Check my NanoBananaPro API balance. Then create a 16:9, 2K cinematic hero
image of a transparent running shoe on chrome. Wait for the result.
```
```text
Use NanoBananaPro Veo 3 Fast to create a cinematic 16:9 video of a yellow paper
airplane gliding through a clean blue studio. Wait for the final video link.
```
Reference media must be reachable through public HTTPS URLs. The plugin does
not upload local files; upload them to a public object store or the product UI
first, then pass the resulting URL.
## Safety and billing behavior
- Paid image and video tools ask for approval by default.
- The API key is resolved through Harness credentials and is never a model tool
argument.
- Every paid submission sends an `Idempotency-Key`; automatic retries reuse it.
- Retryable `429` and `5xx` responses are retried with bounded backoff.
- Cancellation aborts requests and foreground polling.
- `401` errors point to API-key management; `402` errors point to API recharge.
- If the foreground wait expires, the task is returned with `timed_out: true`.
Continue with `nanobananapro_get_task`; do not submit a duplicate request.
## Configuration
Override the bundle in `$DSH_HOME/profiles/web/cordis.patch.yml` only when
needed:
```yaml
- id: nanobananapro
config:
apiBaseUrl: https://gateway.bananapro.site
apiKeyEnv: NANOBANANAPRO_API_KEY
requestTimeoutMs: 30000
pollIntervalMs: 3000
imageWaitTimeoutMs: 300000
videoWaitTimeoutMs: 900000
maxRetries: 2
retryDelayMs: 500
requireApproval: true
allowLocalHttp: false
```
Harness config rows are replaced as a whole, so retain every setting when
overriding the row. Disable `requireApproval` only for a trusted automation with
an intentional spending limit.
## Validate
```bash
npm run check
npm test
npm run pack:check
```
The package ships plain JavaScript and does not need an install-time build
script.
Install
dsh plugin --profile web add github:synmindai/dsh-nanobananapro
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-nanobananapro from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.