Not Organic Developers

Add Not Organic to your app

Build on portable accounts, persistent workspaces and models that can evolve with people or organizations.

Choose the account and learning boundaries first

Decide who owns the workspace, which data may be used, and whether adaptation belongs to an individual, an organization, both, or neither. A per-customer LoRA is optional. Start with Learning & workspaces, then implement the sign-in handoff below.

Our products are connected to Not Organic. That connection does not imply every product or account has a trained personal model. Review establishes which identity, execution, training and serving paths your integration will use.

1. Apply for launch access

Open Your apps and apply. Provide your app name, HTTPS origin, callback URL, contact email and intended use. Applications remain pending until reviewed. Submitting a form does not enable API access.

During review we confirm your origin, callback, required permissions, billing and provider routing. We configure the approved origin and browser access before asking you to verify a real sign-in.

2. Add a sign-in button

Download the browser sign-in module and host it with your app. The repository SDK also exports createSignInRequest and completeSignIn. This download does not require a published npm package.

import { createSignInRequest } from './notorganic-sign-in.js';

const attempt = await createSignInRequest({
  clientId: location.origin,
  redirectUri: new URL('/auth/notorganic', location.origin).href,
  scopes: ['wallet:read'],
  theme: matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
});
sessionStorage.setItem('notorganic-sign-in', JSON.stringify(attempt));
location.assign(attempt.url);

Run this when the user presses “Sign in with Not Organic”. The hosted page offers both sign-in and account creation. The helper generates a fresh state and PKCE verifier for each attempt.

3. Finish the callback

import { completeSignIn } from './notorganic-sign-in.js';

const saved = sessionStorage.getItem('notorganic-sign-in');
if (!saved) throw new Error('Start sign-in again.');
sessionStorage.removeItem('notorganic-sign-in');
const callback = location.href;
history.replaceState(null, '', location.pathname);
const client = await completeSignIn(JSON.parse(saved), callback);
const wallet = await client.wallet.retrieve();

Catch failures and offer a new sign-in attempt. Keep the returned client in memory. Access lasts five minutes; this starter deliberately does not persist credentials or implement refresh. See device sessions for longer-lived integrations.

The helper verifies the callback and state, exchanges a single-use code, and binds requests to a proof key. Never put provider keys or a product signing secret in your app.

Appearance and permissions

Every app gets the Not Organic theme, with light or dark appearance. Keating, Twyne, Interleave and Stich also have built-in product themes. Custom third-party logos and themes are not self-service yet. Cosmetic parameters never authorize an app or grant access to another product’s credits.

Start with the permissions you need. AI access also requires approved model routing and a funded wallet; sign-in alone does not guarantee an AI response. Read the full authentication contract.