Companion and creator surfaces
Authenticated, age-eligible users can use only the experiences enabled by account state, consent, policy, and environment configuration.
Product documentation
NeedHer is a private consumer application for consented AI companion experiences and policy-controlled image and video generation. This guide covers the web app, desktop client, external media pipeline, commerce integrations, and NeedHer watermark nodes.
Product contract
Authenticated, age-eligible users can use only the experiences enabled by account state, consent, policy, and environment configuration.
Approved requests pass identity, consent, policy, entitlement, and capacity checks before external media execution and provenance treatment.
Users, represented people, rights holders, and trust operators need owned reporting, review, takedown, export, and deletion paths.
Version 0.1.0 is private development source, not a supported self-hosted service. A source checkout does not establish age assurance, moderation, consent, privacy, payment-provider approval, or production readiness.
Safety boundaries
Bring existing data
On first run, or later under Profile → Settings → Companion data, choose a companion-archive version 1 JSON file. The same authenticated POST /api/companion-archive operation is used by the web control and NeedHer Desktop; GET /api/companion-archive exports the account's retained archive.
The archive carries an exact format/version, source product and account identity, profiles or personas, characters, conversations, and ordered user/assistant messages. IDs, roles, order, timestamps, prompts, token counts, and bounded JSON message metadata are validated. Unknown fields, dangling character references, duplicate source IDs, invalid roles or timestamps, non-sequential message positions, and files over 10 MiB are refused before mutation.
Source product plus source ID is the durable identity. An exact repeat is unchanged; a changed object with an existing identity is reported as conflicting and the retained object wins. New objects are committed in one database transaction, so an invalid archive or storage error leaves no partial import. Results report imported, unchanged, conflicting, and rejected counts without returning message contents.
Skipping the first-run import keeps an empty usable archive. Imported data is owned by the signed-in destination account under Supabase row-level security; it does not publish a character, generate content, send a message, overwrite an existing chat, or claim onboarding success before the database accepts the transaction.
The repository's npm run archive command invokes those same authenticated routes. Pipe the signed-in account bearer on standard input, never in an argument or the environment; imports print only result counts, and export refuses to overwrite an existing file. Install the declared bin from source and see every accepted command in the CLI reference.
# NEEDHER_API_URL names the API origin and is required; HTTPS except localhost
export NEEDHER_API_URL=https://<needher-origin>
skarbiec get <item> --field token | npm run archive -- import ./archive.json
skarbiec get <item> --field token | npm run archive -- export ./needher-export.jsonWeb development
Use development-only identity, data, media, and payment endpoints. Missing production services should remain explicit failures; never point a local checkout at customer data just to make a route appear healthy.
git clone https://github.com/wisent-ai/needher-ai-web.git
cd needher-ai-web
npm install
cp .env.example .env.local
npm run devOpen http://localhost:3000. The public surface should render or return a classified missing-configuration error.
| Boundary | Configuration |
|---|---|
| Application | NEXT_PUBLIC_APP_URL and the configured identity/application backend |
| Card payments | STRIPE_SECRET_KEY, publishable key, and webhook signing secret |
| Solana | Merchant wallet, network, and an approved RPC endpoint |
| Commerce | Coinbase Commerce API and webhook credentials when that provider is enabled |
| Media | Approved content-platform and generation-service endpoints |
Commerce
Create checkout server-side. Verify the signed webhook and reconcile the provider object before granting Sparks.
Validate recipient, token, amount, reference, network, and finality server-side before recording value.
Verify webhook signatures, expected charge data, currency, status, and idempotency before fulfilment.
External media pipeline
The web application reads finished media from the content platform. Generation belongs on an approved external host, and outputs must keep the manifest, provenance, consent, and watermark contracts expected by the application.
COMFYUI_DIR=/path/to/ComfyUI COMFYUI_PYTHON=/path/to/ComfyUI/venv/bin/python npm run comfy:reactor:installsrc/lib/dailyFill.ts.Other repositories
The Electron + React client has AI companion and verified human creator modes. Its first-run sheet and Settings view send archive bytes to the same NeedHer web operation; the renderer never parses or stores the bearer. Configure NEEDHER_API_URL and NEEDHER_ACCESS_TOKEN in the desktop process. Import chooses a JSON file; export writes needher-companion-archive.json through a native save dialog.
git clone https://github.com/wisent-ai/needher-ai-desktop.git
cd needher-ai-desktop
npm install
NEEDHER_API_URL=https://www.needher.ai \
NEEDHER_ACCESS_TOKEN=your-signed-in-account-bearer \
npm run devBuild a macOS package with npm run package -- --mac --dir --publish never. Packaging requires an Apple signing certificate and refuses an unsigned app; CSC_NAME selects the identity. Developer ID Application is required for distribution, while Apple Development can sign a local development package. The app keeps ai.wisent.needher.desktop across updates. A development signature is not notarization.
The custom-node repository provides image overlay, watermarked WebP output, and video watermark nodes. Configure NEEDHER_WATERMARK_LOGO or an explicit transparent PNG path. Video output requires ffmpeg on PATH.
cd ComfyUI/custom_nodes
git clone https://github.com/wisent-ai/needher-comfyui-watermark-nodes.git
pip install -r needher-comfyui-watermark-nodes/requirements.txt