# Advertising Source: https://docs.nanocorp.so/advertising Run Meta (Facebook and Instagram) ads for your business, billed from your credits. Advertising is available on **any paid Founder plan (\$30/month or higher)**. On the free plan the **Ads** card on your business dashboard shows an **Upgrade** prompt instead of the budget slider. ## Overview NanoCorp can run Meta (Facebook and Instagram) traffic ads that send people to your business's website. You set one number, a daily budget, and we handle the rest: we generate the ad, launch it, keep it running, and show you the results. There is a single control, the **daily budget** slider on the **Ads** card of your business dashboard. * **\$0** means ads are off. * Any amount from **\$3 to \$150 per day** means ads are live. ## Launching your first ad 1. Open your business dashboard and find the **Ads** card. 2. Drag the daily budget slider to the amount you want to spend per day. 3. The first time anyone in your conglomerate goes live, a one-time prompt confirms that ad spend is billed from your credits. After you accept, we generate your ad and start delivery. Generation takes under a minute. You do not write copy, choose images, or set up targeting. We generate all of it from your business profile. Setting a budget your current balance cannot cover is rejected on the spot, with the exact number of credits you would need. Top up or pick a lower budget. ## How you pay Ad spend is deducted from your conglomerate's **credit balance**, the same balance that powers everything else your businesses do. 1 credit covers \$1 of daily budget. * Once per day, an amount equal to your daily budget is deducted from your credits. * Every deduction is **itemized in your credit ledger**, so the ledger is your complete paper trail. There are no per-charge card receipts. * To **pause**, set the daily budget back to **\$0** at any time. You can go live again whenever you want. * Your business's agent can pause ads too, by setting the daily budget to **\$0**, when it sees your budget going to waste. It can never choose a budget or take ads live again: that stays yours, on the slider. If a business is archived, or your paid plan lapses (canceled or downgraded below \$30/month), running ads are stopped and any unused prepaid ad budget is **refunded to your credits** automatically. Pausing yourself (budget to \$0) keeps the unused budget reserved for when you resume. ## If you run out of credits If your balance cannot cover the day's budget: 1. Your ads pause automatically and the Ads card shows an "out of credits" banner. 2. You get one email telling you what happened. 3. The moment your balance recovers, from a top-up, an auto top-up, or your monthly plan renewal, your ads **resume on their own** within about 15 minutes. You never need to touch the budget slider. Turning on **auto top-up** (Top-Ups tab of the Subscription modal) is the easiest way to keep ads running without interruptions. One sizing note: auto top-up buys a fixed bundle (10 to 100 credits) and runs at most twice per day. If your bundle is smaller than your daily ad budget, the day's deduction can still fail (ads pause for that day and you get the email), so pick a bundle at least as large as your daily budget. ## Your ad and its results We generate a complete ad from your business's mission and website: * A square image, body copy, a headline, a call to action, and country and age targeting. * Want a different version? Use **Regenerate**. You can regenerate up to **2 times per day**. Your agent can regenerate too, and it draws on the same 2 per day. * The ad is written from your business profile (name, one-liner and mission), which only you can edit. If the ad names the wrong thing, fix the profile first, then regenerate. Once your ad is live, the Ads card shows performance, refreshed automatically: * Click-through rate (CTR), impressions, clicks, cost per click (CPC), cost per thousand impressions (CPM), and spend. ## Who can use it Advertising is available on **any paid Founder plan (\$30/month or higher)**. Upgrade from **Billing & Credits** (the **Plans** tab of the **Subscription** modal), then open any business dashboard to find the **Ads** card. If you cancel or your plan drops below \$30/month, any running ads are stopped and unused prepaid ad budget is refunded to your credits. # Billing, refunds and cancellations Source: https://docs.nanocorp.so/billing-policy What is billed, what is refunded, how to cancel, and what happens to unused credits. ## Is completed work billed? Yes. Completed work is billed. Failed tasks are refunded automatically. There are no goodwill credits or discretionary refunds for work that ran and completed, even if you are unhappy with the output. On older task-based businesses, a failed task is refunded to your credit balance automatically. You may briefly see a deduction before the credit is added back. See [Plans and credits](/plans-and-credits) for how turns and tasks are billed. ## How do I cancel my plan? Cancellation is done in the app. The Stripe customer portal has no Cancel button. From a business dashboard, open **Billing & Credits** (classic menu) or **Billing & credits** (v3 menu). From Conglomerate HQ, open **Manage plan**. That opens the **Subscription** modal. On the **Plans** tab, click **Manage subscription**. Click **Cancel plan…**. Cancellation takes effect at the end of the current billing period. The Stripe portal (from **Update payment method** or **Billing history & invoices** in that same **Manage subscription** screen) is only for payment methods and invoices. Cancelling does not refund the remaining period. Unused credits stay on the conglomerate; they are not paid out as cash. See below. ## Are unused credits refunded or transferable? No. Unused plan credits are not refunded in cash and do not transfer to another account or conglomerate. Cancelling does not refund the remaining period. Credits you already have stay on the conglomerate until you use them. Top-up credits stay too; cancelling does not wipe them. See [Plans and credits](/plans-and-credits). ## What happens when my trial or plan ends? When a trial or paid plan ends, the website stays up, checkout closes, a custom domain is released (the site keeps serving on its `nanocorp.app` address), agents stop, and nothing is deleted. Reopening the shop (**Light** or **Founder**) restores everything within minutes. The full dormant-shop list is on [Plans and credits](/plans-and-credits). Custom domains are covered on [Use a custom domain](/custom-domains#custom-domains-and-dormant-shops). How to reopen is in the [FAQ](/faq). # Checkout link parameters Source: https://docs.nanocorp.so/checkout-links Preset the quantity, pass your own order reference, and prefill the buyer's email on your checkout links. Your business's checkout links are permanent NanoCorp URLs (`checkout.nanocorp.so/c/{slug}`). Your site can add URL parameters to them to control the checkout it opens: lock in a quantity, attach your own order reference, and prefill the buyer's email. This is how sites build flows like auctions, bids, and pay-what-you-want pricing on top of a fixed-price product. ```text theme={null} https://checkout.nanocorp.so/c/{slug}?qty=715&client_reference_id=bid_8f3a&customer_email=jane%40acme.com ``` ## The parameters | Parameter | Works on | Valid values | What it does | | --------------------- | ---------------------- | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `qty` | Per-product links only | Whole number from 1 to 999,999. The total (quantity times unit price) must stay at or under \$999,999.99. | Opens the checkout **locked** at exactly that quantity. The buyer cannot change it on the payment page. | | `client_reference_id` | Any checkout link | 1 to 200 characters: letters, digits, `_`, `-` | Your own reference (an order id, a bid id). It comes back to your site on the payment webhook, so you can match the payment to your record. | | `customer_email` | Any checkout link | A valid email address, up to 254 characters | Prefills the buyer's email on the payment page, **read-only**. Use it when your site already collected the email and the webhook must come back with the same one. | Values must be URL-encoded (for example `jane%40acme.com`). Any parameter your site does not set is simply omitted; unrecognized parameters are ignored. `customer_email` travels in the URL, so it appears wherever URLs are recorded: the buyer's browser history, and any analytics on your own site that capture link addresses. If that matters for your use case, pass only `client_reference_id` (an opaque id) and let the buyer type their email on the payment page; the webhook still returns whatever email the buyer used. ## Strict and lenient behavior The three parameters are validated differently, on purpose: * **`qty` is strict.** An invalid quantity (not a whole number, out of range, a total over the card-payment maximum, or `qty` on the all-products link) shows the buyer a branded "This checkout link is invalid" page with the specific reason. It never falls back to quantity 1 and never rounds: a broken link fails loudly instead of charging the wrong amount. If your site builds links from a template, test every shape it can generate. * **`client_reference_id` and `customer_email` are lenient.** A malformed value is dropped and the checkout proceeds without it. `qty` only works on a **per-product** link (the `checkout_url` of one product). On the business-wide all-products link it always shows the invalid link page, because the quantity would be ambiguous across items. ## Locked quantity: the bid pattern Because `qty` locks the amount, a site controls bid increments by rendering several links to the same product with different quantities. The usual mechanic is a **bid-unit product**: a \$1 product where `?qty=715` means a \$715 bid. The checkout headline shows the computed total (for example "\$715.00"), not a unit breakdown. Ask your business's agents to build this: the pattern (bid buttons, webhook settlement, outbid notifications) is something they know how to wire end to end. ## Capping the quantity on the product itself `qty` decides the amount for one click. When the limit belongs to the product rather than the link, set it on the product instead, and it applies to every link that sells it, including the ones already published in your ads and site code. By default a buyer can pick 1 to 99 of a product on the payment page. Your agents cap that with `max_quantity` (1 to 999,999): ```bash theme={null} nanocorp products update --max-quantity 1 # one per customer nanocorp products update --clear-max-quantity ``` `--max-quantity 1` is the right setting for a single seat, a named pass or a booking: the payment page then shows no quantity control at all. It changes no price and no URL, so the product's `checkout_url` keeps working exactly as before. A `?qty=N` link still wins over the product's ceiling, so your bid flows are unaffected. ## The language and the name on the payment page The payment page shows **your business's own name** at the top, so it matches the brand the buyer just read on your site. NanoCorp is the merchant of record for the sale, so NanoCorp still appears in the receipt, the terms and the card statement line. The page is rendered in the buyer's own browser language. If you sell into a single language market and want it always in that language, pin it: ```bash theme={null} nanocorp payments settings # read the current settings nanocorp payments settings --locale es # always Spanish nanocorp payments settings --locale auto # back to the buyer's own language ``` Discount and promotion codes are not self-serve today: they live on NanoCorp's shared Stripe account, so [contact support](/support) if you need one for your business. ## What comes back on the webhook After a successful payment, NanoCorp forwards the `checkout.session.completed` event to your site at `/api/webhooks/nanocorp`. The fields that close the loop: * `data.object.amount_total`: what the buyer actually paid, in the smallest currency unit (cents for USD). * `data.object.client_reference_id`: exactly what your link carried, or `null` if it carried none. * `data.object.customer_details.email`: the buyer's email (with `customer_email` set, the same address you passed). Treat `client_reference_id` as a **correlation key, not authentication**: the forwarded webhook is not signed, so use the id to look up your own record, and verify anything high-stakes against your revenue via the CLI (`nanocorp payments revenue`). ## The success page is cosmetic After paying, the buyer's browser is redirected to `/checkout/success?session_id=...` on your site. That page is a thank-you screen only: the buyer can close the tab before it loads. Do fulfillment in the webhook handler, never in the success page. ## Testing The same parameters work on your **test** checkout link with Stripe's test card `4242 4242 4242 4242`. Open `{test_checkout_url}?qty=7&client_reference_id=test_1`, pay with the test card, and check that your webhook receives `amount_total` equal to 7 times the unit price along with your reference. See [Testing your checkout](/testing-payments). # CLI quickstart Source: https://docs.nanocorp.so/cli Start and run a business from your terminal Create a business and start building with a coding agent, without leaving the terminal. Businesses created from the CLI run on the same v3 harness as businesses started on the web, without the founding interview: the business's own agent reads your repository and your idea on its first pass and writes the founding documents (`PITCH.md`, `BRAND.md`, `FLOW.md`) itself. ```sh theme={null} npm i -g nanocorp ``` Prefer not to install globally? Run it on demand with `npx nanocorp`. Sign up at [app.nanocorp.so](https://app.nanocorp.so) first, then: ```sh theme={null} nanocorp login ``` From an idea, in an empty folder: ```sh theme={null} mkdir acme && cd acme nanocorp init --idea "Booking and records for vet clinics" ``` From code you already have (the agent reads it; `--idea` is optional): ```sh theme={null} cd ~/code/myapp nanocorp init ``` `--name` sets the display name and `--handle` the address (`{handle}.nanocorp.app`, 1-15 lowercase letters, digits, hyphens); both are generated when omitted. Your code is pushed into the new business repo, the first pass starts, and the business is activated (daily check-ins on). Pass `--paused` to keep it paused while you build locally, `--wait` to follow the first pass and pull the founding documents when it ends. Standing to found applies, as on the web: a Founder plan or a live trial and at least 12 credits. A CLI birth grants no welcome credits; if your account is short, top up or upgrade from the dashboard, or start your first business on the web, then run `nanocorp init` again (it exits with code 2 until then). ```sh theme={null} claude # or: codex ``` Tell it what to build. It acts through the `nanocorp` CLI (run `nanocorp skills install` once to teach your agent the commands). The business's own agent commits to `main` too, so `git pull --rebase` before you push. Ask the business for a landing page or the product from its dashboard chat, or leave the work on its shared task list (`nanocorp tasks create`). Already have a business? Connect it with `nanocorp init --company `. See `nanocorp init --help` for all options. ## Windows users The default install path assumes macOS or Linux. Native Windows installs are not supported yet. If `npm i -g nanocorp` fails with `EBADPLATFORM` in PowerShell, install and run the CLI inside WSL2 instead. From PowerShell: ```powershell theme={null} wsl --install -d Ubuntu ``` Then open Ubuntu and install Node.js 18 or newer. After that, install NanoCorp from the Linux shell: ```sh theme={null} npm i -g nanocorp nanocorp login ``` WSL uses the Linux build of the CLI, so the normal `nanocorp` commands work from there. # Business API key Source: https://docs.nanocorp.so/company-api-key Every business has one permanent API key its website and agents use to call the NanoCorp platform: find it, use it server-side, and rotate it if it leaks. Every NanoCorp business has one **permanent API key**. It is the credential your business's website and agents use to call the NanoCorp platform at runtime, for example a contact form on your deployed site that sends you an email. The key starts with `nano_c_v1_` and keeps working until you rotate it. You normally never have to handle the key yourself: it is already available to your agents and to your deployed website. Reach for this page when you are wiring a custom integration or when you think the key leaked. ## Where to find it From your business dashboard, open **Menu → Business Settings**. The key is shown masked. Click **Show** to reveal it or **Copy** to copy it without revealing. Viewing the card for the first time creates the key automatically. ## Where it is already available Your key is injected for you in two places, under the same names: * **Your deployed website** (all environments): the environment variables `NANOCORP_TOKEN` (the key) and `NANOCORP_BACKEND_URL` (the API base URL) are set on your site's hosting and kept up to date by the platform. * **Your agents' sandbox**: the same two variables are present in every run. These two variables are platform-managed: agents cannot overwrite them, and you should not set them yourself. ## Use it from your website Call the platform from **server-side code only**: an API route, a server action, or a backend. Example: a contact-form route that emails you the submission. ```ts theme={null} // app/api/contact/route.ts: server-side only export async function POST(req: Request) { const { email, message } = await req.json(); const res = await fetch( `${process.env.NANOCORP_BACKEND_URL}/internal/tools/send_email/execute`, { method: "POST", headers: { Authorization: `Bearer ${process.env.NANOCORP_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ arguments: { to: "you@yourcompany.com", subject: `Contact from ${email}`, body: message, }, }), }, ); return Response.json(await res.json()); } ``` Calls made with your key count against the same per-business limits as your agents' tool calls: see [Rate limits](/rate-limits). **Keep the key server-side.** Never put it in a `NEXT_PUBLIC_` variable, ship it in client-side JavaScript, render it on a page, or commit it to your repository. Anyone holding the key can act as your business. ## Rotate the key If the key leaks (or you suspect it did), rotate it from the same settings card. Rotation is immediate and self-healing for everything the platform manages: 1. Click **Rotate key** and confirm. 2. The old key stops working right away (within about a minute). 3. Your site's environment variables are updated and the site redeploys automatically: expect roughly two minutes during which calls using the old key fail. 4. The next agent run picks up the new key automatically. Anything **you** copied the key into by hand (an external service, a script, another host) must be updated by you: rotation cannot reach it. Rotation replaces the business API key only. If you need a full credential lockdown after a serious leak, contact support. ## Troubleshooting * **My integration gets `401 Unauthorized`.** The key it uses is no longer valid: most likely it was rotated, or an old temporary token was hardcoded. Point your code at the `NANOCORP_TOKEN` environment variable (don't paste the literal value), then rotate once from the settings card to refresh what your site has. * **I can't set `NANOCORP_TOKEN` as an env var.** That's intentional: it is platform-managed. Your site already receives it. Still stuck? Open the in-app **Support** chat, or email [support@nanocorp.so](mailto:support@nanocorp.so). # Use a custom domain Source: https://docs.nanocorp.so/custom-domains Buy a domain inside NanoCorp, or point a domain you already own to your business website. Custom domains are included on both paid plans, **Light** and **Founder**. See [Plans and credits](/plans-and-credits) to upgrade. By default, your business's website is published at a `nanocorp.app` address. With a custom domain, your visitors see something like `yourcompany.com` instead. There are two ways to get one, both in **Business Settings → Custom Domain**: * **Buy a new domain** right inside NanoCorp: it goes live on your site within minutes, with zero DNS setup. * **Attach a domain you already own**: you add one DNS record at your registrar and NanoCorp verifies it. ## Buy a new domain in NanoCorp The **Buy a new domain** tab lets you search, pay by card, and go live without ever touching DNS. Type a name (like `acme`) to see it across popular endings (`.com`, `.co`, `.ai`, `.io`, and more), or type a full domain (like `acme.beer`) to check that exact one. Each available domain shows its yearly price; taken ones are greyed out. Click **Buy** and complete the secure Stripe checkout. The price you saw is re-checked at checkout. If it changed (rare, mostly premium names), you'll be asked to confirm the new price before anything is charged. Back in your settings you'll see "Registering… this takes a minute or two", then your site is live on the new domain over HTTPS. `www.yourdomain.com` redirects to `yourdomain.com` automatically. No DNS records, nothing to configure. Some things worth knowing: * Prices are shown per year. A few endings (like `.ai`) have a two-year minimum, and the price shown covers the whole minimum term. * NanoCorp registers and holds the domain **on your behalf** and handles the technical side, including renewals. If you ever want to transfer the domain out to your own registrar, contact support and we'll help. * Very expensive premium domains show **"Premium domain: contact support"** instead of a Buy button, and a few exotic endings that need extra registration paperwork are marked **"Contact support to buy this one"**. * In the rare case a registration fails after payment (for example, the domain gets taken at the last second), you'll see it marked failed and **your payment is refunded**. ### Your domains Every domain you buy belongs to your account (not to a single business) and appears in the **Your domains** list in the same section, with its status: * **Live**: attached and serving this business's site. * **Going live**: attached, waiting for the internet to pick it up (usually minutes). * **Parked**: owned by you, not attached anywhere. * **Registering**: purchase in progress. Each business's settings shows the domains relevant to that business: the domain attached to it, your parked domains, and its own purchases in progress. A domain serving another one of your businesses is managed from that business's settings. Use **Attach** to point a parked domain at any of your businesses (this replaces that business's current domain, which goes back to being parked if it was bought on NanoCorp). Use **Detach** to park it again. The site reverts to its `nanocorp.app` address. A domain bought on NanoCorp is managed from this list, not from the attach tab. ## Attach a domain you already own You bring the domain. NanoCorp connects it to your business's website and sets up HTTPS automatically once your DNS is verified. ## Before you start You'll need: * A **Founder plan** subscription. See [Plans and credits](/plans-and-credits). * Your business's **website already deployed**. If it isn't, NanoCorp will tell you when you try to save. Come back once the website is live. * A **domain you own**, bought from a registrar such as GoDaddy, Namecheap, Cloudflare, Google Domains, or similar. The domains `nanocorp.app`, `nanocorp.so`, and `localhost` are reserved and can't be used. ## Add your domain in NanoCorp From your business dashboard, open the menu and click **Business Settings**. Scroll to **Custom Domain** and select the **Attach a domain you own** tab. Type the domain you want to use (for example `yourcompany.com` or `www.yourcompany.com`), then click **Save**. After saving, the status shows **Pending** and NanoCorp displays a DNS record you need to add at your registrar. Keep this page open for the next step. ## Update your DNS records This is the only part where you have to do work outside of NanoCorp. You're going to tell your domain to point to NanoCorp's servers by adding a DNS record at your **registrar** (the website where you bought the domain). Sign in at the site where you bought your domain. Common ones are GoDaddy, Namecheap, Cloudflare, Google Domains, and OVH. Every registrar calls this something slightly different. Look for a section named **DNS**, **DNS Management**, **DNS Settings**, or **Advanced DNS**. NanoCorp shows three values: **Type**, **Name**, and **Value**. Copy each one into the matching field when you create a new record at your registrar. Save the new record. It usually takes a few minutes (and occasionally up to a few hours) for DNS changes to become visible across the internet. **One thing to know about the Name (or Host) field** Many registrars want it entered in a shorter form than NanoCorp shows: * For a domain like `yourcompany.com`: type `@` or leave the field blank. * For a domain like `www.yourcompany.com`: type just `www`. If in doubt, paste exactly what NanoCorp shows. Most registrars accept that too. **Optional: also redirect `www` to your apex** If you used an apex domain like `yourcompany.com`, NanoCorp configures a redirect from `www.yourcompany.com` to `yourcompany.com` automatically once your apex domain is verified. To activate it, add this second DNS record at your registrar: | Type | Name | Value | | ----- | ---- | --------------------- | | CNAME | www | cname.vercel-dns.com. | Once it propagates, visitors typing `www.yourcompany.com` are redirected to `yourcompany.com` over HTTPS (308 permanent redirect). HTTPS for the `www` host is set up automatically too. Skip this step if you want only `yourcompany.com` to be reachable. ## Wait for verification Once you've saved your DNS record, there's nothing else to do on your side. NanoCorp automatically checks whether your DNS is ready every few seconds. Keep the Custom Domain section open and wait. * While the check is in progress, you'll see **Verifying DNS... This can take a few minutes.** * When verification succeeds, the status flips to **Active** and the section shows **Live.** Your site is now reachable at your custom domain. HTTPS is set up automatically, so visitors connect securely over `https://` without any extra configuration from you. If verification takes a long time, DNS changes occasionally need up to a few hours to propagate across the internet. Double-check at your registrar that the record you added matches exactly what NanoCorp showed you (type, name, and value). ## Keep one canonical address Your `nanocorp.app` address keeps working once a custom domain is live: both addresses serve the same site. If you'd rather have a single address for search engines, ask your agent to redirect the old one to your domain. Your agent has what it needs for that: requests arriving on `{handle}.nanocorp.app` pass through NanoCorp's edge, which adds an `x-nanocorp-host` request header carrying the hostname the visitor typed. Requests on your custom domain go straight to your app, so the header is normally absent there. That difference is what lets the app send `nanocorp.app` visitors to your domain with a permanent redirect. It's a routing hint only, so it shouldn't be used to decide who is allowed to see something. The usual `host` and `x-forwarded-host` headers can't be used for this: the hosting layer rewrites both to an internal hostname. ## Email at your domain A custom domain covers the website. Getting `hello@yourcompany.com` to work means adding mail records (MX, and the SPF/DKIM/DMARC TXT records your mail provider gives you) to the domain's DNS. Where you do that depends on which of the two paths you took. This points your domain's mail at a mailbox you already have, at any provider. It does not move your NanoCorp company inbox: NanoCorp keeps sending and receiving on the company's `nanocorp.app` address. ### Domains you bought inside NanoCorp These sit on NanoCorp's nameservers, so the records are edited here. Ask your agent, or run it yourself in the sandbox: ```bash theme={null} nanocorp site dns list nanocorp site dns add --type MX --value mx1.yourmailprovider.com --priority 10 nanocorp site dns add --type TXT --value "v=spf1 include:_spf.yourmailprovider.com ~all" nanocorp site dns add --type TXT --name selector1._domainkey --value "v=DKIM1; k=rsa; p=..." nanocorp site dns remove --id ``` You can add `MX` and `TXT` records anywhere in the domain, and `CNAME` records on a subdomain. The records that keep your website reachable are listed as **protected** and cannot be changed or removed: the domain's own address record, `www`, and the verification records under `_vercel`. Adding mail records never disturbs them. ### Domains you registered elsewhere Your registrar still holds the DNS, so you add the mail records there, next to the A or CNAME record you added for NanoCorp. Nothing needs to change on the NanoCorp side, and adding MX or TXT records does not affect the website record. ## Remove a custom domain In the **Custom Domain** section of Business Settings, click **Remove**. Your site goes back to its default `nanocorp.app` address. You can add a new custom domain later if you want. ## Custom domains and dormant shops Custom domains are a paid-plan feature. If your trial or plan ends and your shop goes dormant, the custom domain is released: your site keeps serving on its `nanocorp.app` address, and visitors to the custom domain will see an error page until you reopen. Your domain settings and verification are kept — reopening the shop (Light or Founder) re-attaches the domain automatically within minutes, with no DNS changes needed. ## Troubleshooting ### Error messages when saving a domain Messages you might see when saving a domain: * **"Invalid domain format"**: the domain doesn't look like a valid domain. Type it without `http://` or trailing slashes (use `yourcompany.com`, not `https://yourcompany.com/`). * **"This domain is reserved and cannot be used"**: `nanocorp.app`, `nanocorp.so`, and `localhost` are reserved. Use a domain you own. * **"Website must be deployed before adding a custom domain"**: your business's website hasn't been published yet. Come back once it has. * **"Custom domains require a paid plan"**: you're on the Free plan (or your trial ended). See [Plans and credits](/plans-and-credits) to upgrade. ### Domain is saved but returns 404 If your custom domain shows **HTTP 404** (especially with a header `x-vercel-error: DEPLOYMENT_NOT_FOUND`) while `{yourhandle}.nanocorp.app` is live and working, the domain reached Vercel but isn't bound to your business's project. **To fix:** open **Business Settings → Custom Domain** and click **Save** with the domain still in the field. Saving always re-runs the attachment, so re-saving the same domain re-binds it. Your domain should go live within minutes. Your agent can do the same from its sandbox with `nanocorp site domain set yourcompany.com`, then `nanocorp site domain check` to watch the verification. **Still 404 after that?** Remove the domain, save, type it back in and save again. A plain re-save cannot help when the domain is already listed on your project but its binding is stale, because there is nothing new to attach; removing it first is what clears that. If the domain is bound to a different project, the save fails with a clear error instead of reporting success. That means the domain is claimed elsewhere, so contact support. **Common mistake:** pointing `www` at `*.nanocorp.app` instead of `cname.vercel-dns.com.` will not work. See the "Optional: also redirect `www` to your apex" section above for the correct DNS record. Still stuck? Open the in-app **Support** chat, or email [support@nanocorp.so](mailto:support@nanocorp.so). # FAQ Source: https://docs.nanocorp.so/faq Frequently asked questions about NanoCorp. ## Getting started NanoCorp is the platform to create and run autonomous businesses. In just one prompt, get an autonomous business run by an agent that maximizes revenues while trying to avoid bankruptcy with no human intervention. No. NanoCorp is designed for all levels of experience. Whether you’re a developer or a non-technical user, you can launch a business using NanoCorp. Signing up needs a permanent address you can receive mail at. Temporary and throwaway inboxes are not accepted, which keeps free trials available for people genuinely building a business. If you saw that message, sign up again with your everyday personal or work address. You will also be asked to sign in rather than sign up if that address already has a NanoCorp account. In that case, use the method you originally signed up with. If you think a normal address was refused by mistake, email [support@nanocorp.so](mailto:support@nanocorp.so) and we will get you in. Business creation (on the loading screen) usually takes a few seconds but can take up to 2 minutes during high traffic times. If it takes more than 5, go back to the home section of your conglomerate to check the list of your businesses before trying to create a new one. Business creation (on the loading screen) usually takes a few seconds but can take up to 2 minutes during high traffic times. If it takes more than 2 minutes, it is not normal. Go back to your conglomerate page (home) to check if the business was created. Contact us if the problem persists. A task runs the same way whichever of you triggers it. The one difference: pressing **Run** yourself executes the task immediately even if the business has hit its daily task or credit cap (autonomous runs respect those caps). You still need credits and an active plan, and only one task runs per business at a time. Use the **Autonomy** control in the **Engine** panel of the business dashboard to set how hard the CEO runs. On **AUTO** there's no daily cap — the CEO paces itself to make your credits last until your next refill. **Low**, **Medium**, **Hard**, and **Ultra** cap autonomous tasks at **1**, **5**, **10**, and **25** per day respectively. You can also set a conglomerate-wide daily credit cap with **edit daily cap** in the **Credits** panel — once the cap is reached, no new tasks will be dispatched for any business in the conglomerate until older spend falls outside the 24-hour window. These caps only pause **autonomous** runs — you can press **Run** on a task to execute it immediately, as long as your conglomerate still has credits and your plan hasn't ended (once a trial or plan expires, all runs pause until you pick a plan). Turn **Daily Run** off in **Ops**. That is the only way to stop autonomous work on a v3 business. Telling the agent in chat to stop, or writing "stop" in the mission, does not stop the business. A classic business no longer runs at all: its agents are retired, so there is nothing to stop. Only a Light plan still sees the classic **Controls** panel and its STOP/RUN switch. A task that is already running finishes rather than being cancelled, so this is not an instant stop on spending. The other four switches (Website, Checkout, Outbound email, Prospecting) each turn off one capability rather than the agent, and **Pause everything** turns all five off at once. Business Settings shows the same five positions read-only and links you back to the dashboard; it has no pause button of its own. On a business started through the founding interview, messages you send in chat still start billed agent turns after you stop autonomy. You can still chat with a stopped business. To slow work down rather than stop it on Light's classic dashboard: lower the **Autonomy** level in the **Engine** panel, and set a daily credit cap with **edit daily cap** in the **Credits** panel. On v3 there is no slow-down setting. Yes. If you already have a product, describe it in the founding interview and the business is built around it. For a business that lives entirely outside NanoCorp, each situation is different: start the interview, describe what exists, and see what the agent proposes. If your business still runs on NanoCorp's classic (v2) harness, open it: its page is the [switch to v3](/founding-interview#switching-an-existing-business-to-v3). The classic (v2) harness is retired. Its agents no longer run for any classic business, paying plans included. Opening the business lands on its switch page. The switch is a short, free interview that writes the founding brief from the business as it is today; you review it, then press **Switch to v3**. The press needs a Founder plan or a live trial and at least 12 credits, and it grants no welcome credits. Nothing is rebuilt: your site, products, checkout, inbox, tasks, balance and code stay. The other path is **Archive** in Business Settings. There is no way to keep a business on the classic harness. After the switch, the classic **CEO chat** is retired; use the chat on the business page. See [Switching an existing business to v3](/founding-interview#switching-an-existing-business-to-v3) for the full flow. **Desktop View (beta)** is an experimental windowed take on your business dashboard, styled like a classic desktop. Open it from the menu (**Desktop View (beta)**); it shows the same panels and data as the classic dashboard, and you can switch the wallpaper theme. It works best on larger screens. ## Credits and billing The free tier is a **3-day trial of everything** — site hosting, email, checkout, and agents, no card needed. Credits do not renew daily: you receive **15 welcome credits** the first time you press **Start the business** in the [founding interview](/founding-interview) (once per account, ever). A business created through the CLI or the API grants nothing: it needs the same standing at creation, so start your first business on the web to receive the welcome credits. Without a subscription, 3 days after signup your shop goes **dormant**: your website **stays up** (with the NanoCorp badge), but payment links and checkouts show a "store closed" page instead of taking payments, your custom domain is released (the site keeps serving on its `nanocorp.app` address), outbound email is paused, and agents stop running — queued tasks are frozen, not deleted. **Inbound email keeps arriving and stays readable in your dashboard**, and the CEO chat stays open. Nothing is deleted. Your account was created before NanoCorp had plans, so right now you don't have a plan with us. From **August 21, 2026**, every store needs one — the website **stays up for free** (with the NanoCorp badge), but without a plan the shop goes dormant: checkout shows a "store closed" page and outbound email pauses. Nothing is deleted — your site, products, data, inbox and any credits stay exactly as they are. Keeping the store open takes one plan: **Light** ($4.99/mo — checkout, outbound email, badge removed) or **Founder** (from $30/mo — everything in Light, plus the agents build and sell for you). Subscribing at any time, before or after the date, reopens everything within minutes. Need a few more days? Reply to the email and ask — we grant a one-time extension, no questions asked. Your site never went down — dormant means the site stays up while the business is paused. Reopen the shop from your dashboard and everything comes back automatically within minutes: checkout takes payments again, your custom domain re-attaches, email sending resumes, and frozen tasks pick up where they left off. There is no data loss; customer emails received while you were away are waiting in your inbox. Two ways back: **Founder** (from $30/mo) restores everything including the agents; **Light** ($4.99/mo) reopens the shop — checkout, custom domain, inbox and manual email sends, badge-free, with no AI. Both are offered on the reactivate page linked from the expiry email. The "store closed" page appears when your trial or plan has ended: the site keeps serving for free, but checkout, custom domain, and outbound email are paused. It is shown by NanoCorp's checkout, not by your site's code, so it can't be changed by editing the site. Reopening the shop (Light or Founder) makes checkout take payments again within minutes. While your shop is dormant, NanoCorp counts real visitors who reach your closed checkout (bots are filtered out, and repeat visits by the same person in a day count once). When the first blocked buyer shows up you get an email within the hour, and after that a weekly summary — but only for weeks where someone actually tried to buy. Dollar amounts appear when the blocked checkout sells a single product with a known price, and totals always say "up to" because a visit is intent, not a completed sale. Reopening the shop (Light or Founder) turns the checkout back on and the emails stop being needed. Every one of those emails has a "Stop emailing me about blocked buyers" link in the footer — one click on the confirmation page turns the whole stream off for your account. It only stops the blocked-buyer emails; other account email is unaffected. If you change your mind later, contact support to turn them back on. Once a day NanoCorp emails you a summary of each active business (subjects like "\[Acme] 3 warm leads still waiting on a nudge"). It always goes to the registered account owner. Turn it off per business with the **Daily status email** switch in the dashboard Controls panel: the business keeps running, only the summary stops. Your agent can do it for you too: ask it to stop the daily status emails and it runs `nanocorp emails daily-status pause`, which records who asked in the business activity feed. Replying "Stop" to the email itself does not turn it off: that reply lands in your business inbox, where your agent reads it. This is not the **Outbound email** switch. That one stops your agents from emailing prospects and customers; it does not stop NanoCorp's daily summary to you. Light is a \$4.99/month plan that **reopens a dormant shop**: checkout and payment links take payments again (earnings and withdrawals unchanged), your custom domain comes back, inbound email plus manual sends work, and the NanoCorp badge is removed from your site. It has **no AI** (no agents, tasks, or CEO chat — your history stays readable), no credits or top-ups (credits you already have carry over and reactivate when you're on Founder), no ads, and allows 1 active business. It's offered when your trial or plan ends and in the cancel flow — not on the pricing page. Upgrade to Founder anytime and the agents resume within minutes. On older businesses on the classic harness, talking to the CEO does not consume credits. On v3 businesses (started through the [founding interview](/founding-interview), the CLI or the API), every message you send starts a billed agent turn (about 3–12 credits depending on complexity). On older task-based businesses, it depends on the task complexity — the more complex the task, the more credits are consumed. On average, a task consumes 1 credit. v3 businesses bill per agent turn instead: the founding turn is about 9 credits on the web (a CLI birth's first pass is a modest turn), a chat turn about 3–12, and the full "ship the product" build about 20. Yes. If you have an active subscription, buy a **Top-Up** — a one-time credit bundle — from the **Top-Ups** tab of the **Subscription** modal (open **Billing & Credits** from the menu). Top-up credits behave exactly like subscription credits. See [Plans and credits](/plans-and-credits). NanoCorp use the best AI models to run your business. While it is way cheaper than creating a business powered by humans, AI models are still expensive to run. Lower the **Autonomy** level in the **Engine** panel, or set a conglomerate-wide daily credit cap with **edit daily cap** in the **Credits** panel. If you have many active businesses, all of them dispatch one task per day on the same daily cycle. When your balance has been at zero for a while, pending tasks queue up and then run in parallel as soon as your renewal arrives, which can consume the grant faster than you'd expect. Pause any business you're not actively working on (press **STOP** on the **Controls** panel, or turn **Daily Run** off in **Ops** on v3). Reactivate them one at a time when you want them to run, so you stay in control of what's spending your credits. You can also set a conglomerate-wide daily credit cap in the **Credits** panel as a second safety net. Open **Billing & Credits** from the business menu (**Billing & credits** on v3, or **Manage plan** on Conglomerate HQ) and use the **Plans** tab of the **Subscription** modal to upgrade or downgrade your tier. To cancel, click **Manage subscription** at the bottom of the **Plans** tab, then **Cancel plan…**. Cancellation takes effect at the end of the current billing period. The Stripe customer portal has no Cancel button; use it only to update your payment method and download invoices. Unused credits are not refunded in cash and do not transfer. See [Billing, refunds and cancellations](/billing-policy). Open **Billing & Credits** from the menu, click **Manage subscription** on the **Plans** tab, then **Billing history & invoices** to view and download every past invoice. You can also reach the billing portal directly at [billing.stripe.com/p/login/14AcN6dhO9D1gXgakPeME00](https://billing.stripe.com/p/login/14AcN6dhO9D1gXgakPeME00) and log in with the email on your NanoCorp account. Each business has a unique referral link (found in the referral section of your business page). When someone signs up using your link: * **They** get **5 credits** when they create their first business. * **You** get **5 credits** when they complete their first task. There is no limit on how many people you can refer. Each person can only be referred once. Manual and automatic checks are in place to flag abuse. Failed tasks are refunded automatically. On task-based businesses (CLI/API and older businesses) you might briefly see the credit deducted then added back. Completed work is billed; there are no goodwill credits for a task that ran and finished. See [Billing, refunds and cancellations](/billing-policy). No. Completed work is billed. There are no goodwill credits or discretionary refunds for work that ran and completed, even if you are unhappy with the output. Failed tasks are refunded automatically. See [Billing, refunds and cancellations](/billing-policy). Websites show a small "Edit with NanoCorp" badge in the bottom-right corner on the free tier — during the trial and while a shop is dormant — and it can't be removed by editing your site's code. Any paid plan removes it: **Light** (\$4.99/mo) or **Founder** — the badge disappears automatically within a few minutes of subscribing, no action needed. See [Plans and credits](/plans-and-credits) to upgrade. This error is not from your account but platform wide, when the whole NanoCorp platform is using too much of our providers resources, exceeding our quota. This is usually fixed in minutes and doesn't impact your account. ## Tasks and agents If a task is stuck on pending for a long time, delete it. This can happen when tasks fail. Credits are automatically credited back to your account (it can take a few seconds to appear). Use the DELETE button This applies to the classic harness, which is retired; a v3 business has no task queue. To prevent interferences between workers, you cannot currently run multiple tasks in parallel. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Yes. The daily task cap (set by the **Autonomy** level in the **Engine** panel) and the conglomerate-wide daily credit cap only pause **autonomous** runs. You can always press **Run** on a pending task to execute it right away, as long as your conglomerate still has credits. Only one task runs per business at a time, so if a task is already running, wait for it to finish before starting the next one. This can happen when one of our provider is overloaded. It will auto-heal, no action is required from your side. ## CEO agent After you press **Switch to v3**, the classic **CEO chat** sidebar is retired. Use the chat on the business page. Start a conversation with **New chat**. See [Switching an existing business to v3](/founding-interview#switching-an-existing-business-to-v3). Not at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Yes. Attach files right in your chat with the CEO (the **FILES** button in the composer), or upload them from the **Files** panel on your business dashboard. Files you attach in a chat are saved to your business's files automatically. Your CEO can see the **names** of your files but never reads their contents. When you ask it to work with a file, it hands the file to a worker agent that reads it inside a sandbox. See [Upload files to your business](/file-uploads) for the full walkthrough. ## Agent capabilities Yes! Here's what your business's agents can do: * **Payments**: Create products, generate payment links, track revenue * **Website**: Deploy and manage a public website at `yourcompany.nanocorp.app`, with custom domain support * **Email**: Send, receive, and reply to real emails from your business address * **Browser automation**: Navigate websites, fill forms, extract data, take screenshots * **Documents**: Create and manage internal knowledge bases, playbooks, and notes * **Files**: Upload brand assets, PDFs, CSVs, and folders for your workers to read * **Prospect discovery**: Search for potential customers by title, location, company size, and more * **Analytics**: Track page views and unique visitors on your website * **Database**: Each business gets a dedicated PostgreSQL database with full SQL access * **Code execution**: Full Linux sandbox with Python, Node.js, Git, and common developer tools The CEO agent delegates tasks to specialized worker agents that execute in isolated sandboxes. Yes! You can also send emails to your business to test it. Not at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Not at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Yes. On any paid Founder plan (**\$30/month or higher**), you set a single daily budget on the **Ads** card of your business dashboard and NanoCorp generates and runs Meta (Facebook and Instagram) ads for you. Ad spend is billed from your credit balance. See [Advertising](/advertising). ## Stripe and payments By default NanoCorp proxies all transactions through a NanoCorp managed stripe account. This means you don't have a dedicated stripe account or dashboard. Contact us if need be. Yes. Each product has its own dedicated **buy link** (the recommended choice for product-specific buy buttons), plus your business has a **business-wide All products link** and a **Test payment link** (stable URLs at `checkout.nanocorp.so/c/{slug}` that sell current active products). The CLI (`nanocorp products list` / `create`) returns `checkout_url` and `test_checkout_url` per product. All products must use the same currency. See [Testing your checkout](/testing-payments). Yes. A per-product buy link accepts `?qty=N` (opens the checkout locked at exactly N units; the buyer cannot change it), and any checkout link accepts `client_reference_id` (your own order or bid id, echoed back on the payment webhook) and `customer_email` (prefills the buyer's email read-only). An invalid `qty` shows a branded error page instead of silently charging the wrong amount. This is how sites build auctions, bids, and pay-what-you-want flows. See [Checkout link parameters](/checkout-links). Just ask the CEO to do it! Note that all products must be using the same currency. Every business has a separate **test checkout link** alongside the live one. Find it in the **Business panel → Links → "Test payment"** row on your business dashboard (or ask the CEO in chat), then pay with Stripe's test card **4242 4242 4242 4242** (any future expiry, any CVC). No real money is charged, and the test payment does **not** count toward your revenue. See [Testing your checkout](/testing-payments) for the full flow. Almost always because the test card was used on the **live** link. The test card **4242 4242 4242 4242** only works on your **test link**. On the live link Stripe blocks known test cards, so it is always declined. That is expected, not a broken store. Open your test link instead (see [Testing your checkout](/testing-payments)). Your live link works fine for real customers paying with real cards. No. If you're testing with an **agent or automated browser**, Stripe blocks the payment on "Processing" as an anti-fraud measure. This does **not** mean your checkout is broken. Try your **test link** as a human in a **normal browser** (Chrome, Safari, Firefox) with the test card **4242 4242 4242 4242**. If it completes, your store is working correctly. Live customers using real browsers and real cards are never affected by this hang. See [Automated browsers and "Processing" hangs](/testing-payments#automated-browsers-and-processing-hangs). NanoCorp handles Stripe webhook events internally and forwards `checkout.session.completed` to your business site at `/api/webhooks/nanocorp` after each successful payment. You have no Stripe dashboard, API keys, or webhook secrets to configure. Note that agent or automated-browser testing often hangs on "Processing" and will not complete, so those test sessions will not emit the webhook event — that is expected, not a broken webhook. See [Testing your checkout](/testing-payments). Not at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Not at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. ## Revenue and withdrawals Click **Withdraw** in the Business panel on your business dashboard. On your first withdrawal we create a Stripe Connect Express account for you and send you through Stripe-hosted onboarding (identity and bank details). See [Withdrawals](/withdrawals) for the full flow. Bank collection happens during Stripe onboarding. Stripe determines which countries and bank types are supported; you'll see available options on the Stripe-hosted form. Yes! ## Code and deployment On plans of 120 credits per month or higher (\$120/month), invite yourself (or a developer) from **Business Settings → Code Repository**. See [Access your code on GitHub](/github-access) for the full walkthrough. No. Support does not email, export, or share the source code. Access is self-serve from **Business Settings → Code Repository** on plans of 120 credits per month or higher. Below that tier there is no access. See [Access your code on GitHub](/github-access). You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Yes, on plans of \$120/month or higher. Invite yourself as a collaborator on your business's GitHub repository, clone the code locally, and edit it with your favorite tools. See [Access your code on GitHub](/github-access). In your business dashboard, go to Menu, Business Settings, Custom Domain and follow the steps. You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. If your custom domain shows **HTTP 404** (especially with a header `x-vercel-error: DEPLOYMENT_NOT_FOUND`) while `{yourhandle}.nanocorp.app` is live, the domain is not bound to your project. Fix: **Business Settings → Custom Domain → Remove → Save** (to clear the old binding), then type the domain again and **Save** to re-attach. See [Use a custom domain](/custom-domains) for the full troubleshooting steps. ## Email and outreach Yes! In the Email section Yes. Open a received email in the **Email** panel and click **Reply**. You can also start a new message with **+ New**. You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Apollo is a provider of NanoCorp, used for lead research and enrichment (such as finding email addresses). It's fully managed by the platform, no action needed from you. ## Business management You can **archive** it: open the business's **Settings** page and use the **Archive Business** section at the bottom. Archiving immediately takes the website offline, stops all selling (checkout links stop working), and stops the agents. What you should know before archiving: * **It cannot be undone for now.** If you archived something by mistake, contact support. * **Your earnings stay yours.** Archived businesses appear under **Settings → Archived businesses**, where you can withdraw the remaining balance at any time. * **The business name can't be reused** for a new business. If you just want a break instead, pause the business. That's fully reversible. **Only you can do this.** Archiving and pausing both need your own account, so your agent can't do either for you, and there is no CLI command for it: asking the agent to delete or pause a business will not work. No. An account you delete is not reopened. The same email address cannot be reused. If you want to come back, sign up again with a different email address. Nothing from the deleted account is restored. You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. Yes, contact us. If you are on a paying tier there is no limit. ## API keys and models No. Not really, but you can influence the CEO. You can't at the moment. If you want this feature to be implemented, please mention it in the #feature-requests channel on Discord. ## Security and data Yes. We take data security seriously and apply industry best practices at every layer of the platform — from authentication and encryption to sandboxed execution and access control. Your data is isolated per-organization and never accessible to other users. Support does not email or export your source code. On plans of 120 credits per month or higher, clone the repository yourself from **Business Settings → Code Repository**. See [Access your code on GitHub](/github-access). Database export is not available as a self-serve action. Currently you cannot directly ensure the cybersecurity of your app. NanoCorp agents use active and passive security tools to make sure your app is secure. # Upload files to your business Source: https://docs.nanocorp.so/file-uploads Give your business's workers brand assets, PDFs, CSVs, and folders of documents to work from. Your business's workers do better work when they start from your real material: a brand kit, a pricing PDF, a CSV of leads, a folder of reference docs. The **Files** panel on your business dashboard is where you drop off that material so your workers can read it. Files are **input only**. Your workers read them; they never write back. Anything your business produces still goes to its GitHub repository, the same as always. Files are not the same as **Documents**. Documents are notes your CEO writes and maintains (mission, playbooks, knowledge bases). Files are material **you** provide for your workers to read. ## What you can upload Almost anything your workers might need to read: * **Brand assets**: logos, fonts, color references, image libraries. * **Documents**: PDFs, slide decks, spreadsheets, CSVs, Markdown, plain text. * **Folders**: drop a whole folder and its structure is kept. When you upload a folder, common junk (`node_modules`, `.git`, `__pycache__`, `.venv`, `.DS_Store`) is skipped for you, and the panel shows a short "Skipped N junk files" note. ## Upload files On your business dashboard, find the **Files** panel. It's labeled "Input files for your workers." Drag files or folders onto the **Drop files or folders** zone, or use the **Add files** and **Add folder** buttons. Files upload a few at a time, and the panel shows an **UPLOADING 3/8** counter while it works. Larger files take longer. Each file appears in the list with its path, size, and when it was last updated. A usage meter at the bottom shows how much of your quota you've used, for example `213 MB / 1 GB · 47 files`. Uploading to a path that already exists **replaces** the previous file. ## Attach files in a CEO chat You can also attach files straight from a chat with your CEO. Click the **FILES** button in the message composer, pick your files, and send your message. Files attached this way are **saved to your business's files** automatically (at the top level) and show up in the Files panel, exactly as if you had uploaded them there. Your workers can use them on any future task. The **Workshop** (your business's build screen) works differently. Files you attach to a build message are sent to the builder for that one message only. They are **not** saved to your business's files and won't appear in the Files panel. You can attach up to 5 small files per build message. For anything you want your workers to keep using, upload it in the Files panel or attach it in a CEO chat instead. ## How your agents use your files When an agent starts working, your business's files are copied into its workspace, in a folder it can read. The agent treats them as input: it can read them and even edit its own local copy, but those edits are never saved back to your files. Real output still goes to the business's GitHub repository. So you can ask things like: * "Use the logo in `brand/logo-dark.svg` on the new landing page." * "Summarize the contract in `legal/agreement.pdf` and email me the key terms." * "Clean up `data/leads.csv` and load it into our database." ### When new uploads become visible Files are attached when an agent starts in a **fresh workspace**: the start of every worker task, and the start of a fresh chat session. An agent that's already working keeps the copy it started with, so that folder is a snapshot of the moment it started. If you upload a file mid-conversation, just say so. The agent can look up your current file list and download any file on demand, so it does not have to wait for a fresh start. The copy in its workspace only refreshes the next time it starts fresh, typically your next conversation or after a few minutes of quiet. The more you upload, the longer your agent takes to start: your files are copied into its workspace before the first reply. A handful of documents adds a second or two; hundreds of files, or hundreds of megabytes, can add tens of seconds to every fresh start. Keep your files lean if you care about snappy replies. ## What your CEO can and can't do If your business has a CEO with worker agents: the CEO can see the **names, paths, and sizes** of your files, but it can **never read their contents**. When you ask it to work with a file, it confirms the path and creates a task for a worker, which opens the file inside its sandbox and does the work. So if your CEO says it will "have a worker read that file" rather than reading it on the spot, that's working as intended. Reading file contents always happens in a worker task. Newer businesses have a single agent you chat with directly, with no separate CEO — that agent reads your files itself, right in the conversation. ## Download a file Use the **↓** button on a file's row to download it. This is handy for checking exactly what your workers received, or for sharing with support if an agent misread something. Downloads are one file at a time; there's no folder download yet. ## Delete files * **One file**: click the **×** on its row. * **A folder**: files are grouped under their top-level folder. Click **Delete** on the folder's header to remove everything under it at once. Both ask you to confirm first, then take effect right away. An agent that's already working keeps the copy it started with; the next fresh start sees the change. ## Limits | Limit | Value | | -------------------- | --------------------------- | | Size per file | 100 MB | | Total per business | 1 GB | | Files per business | 1,000 | | Uploads per business | 300 per hour, 1,000 per day | These limits apply on **every plan, including free**. There is no plan gating on file uploads. The per-file cap leaves out raw video by design; for very large media, link to it from a document instead. Files belong to **one business**. If several businesses need the same material, upload it to each of them. ## Privacy and security * Your files are stored privately and are never served on a public URL. * Downloads work only for people who can access your conglomerate, through a short-lived, signed link. When an agent fetches a file on demand it gets the same kind of short-lived link, and only for files belonging to the business it is working on. * Workers run in isolated sandboxes and only ever receive **your** business's files, never another business's. * The store is input-only: there is no way for an agent, or for code pushed to your repository, to write into it. ## Troubleshooting * **An upload failed**: the panel lists the failed files with a **Retry** button. The usual causes are a file over 100 MB or hitting your business's storage quota. * **Something didn't upload from a folder**: common junk folders like `node_modules` are skipped on purpose. * **A file I attached in the Workshop isn't in my Files**: build-message attachments aren't saved. Upload it in the Files panel, or attach it in a CEO chat, to keep it. Still stuck? Open the in-app **Support** chat, or email [support@nanocorp.so](mailto:support@nanocorp.so). # The founding interview Source: https://docs.nanocorp.so/founding-interview How a business is started on the web: idea, interview, Start the business. And how an existing business switches to v3. Creating a business on the web starts with the **founding interview**. You give one sentence about your idea, and an agent interviews you to shape it into a business brief. Nothing is billed until you approve. ## The flow One sentence is enough. The composer on the home page and the **New business** page both start the interview. The agent asks a short series of questions and drafts the business brief. The interview itself consumes **no credits**. This is the approval step, and where billing begins: * Your account receives **15 welcome credits** — once per account, ever, at your first **Start the business** press. * The founding gate then checks you have a **Founder plan or a live trial** and at least **12 credits**. If you're short, you'll be asked to top up or upgrade before the founding starts. The business is created and its first agent turn builds and ships the landing page. This founding turn costs about **9 credits**. From here the business works in **billed agent turns**: a chat turn costs about **3–12 credits** depending on complexity, and the full "ship the product" build costs about **20 credits**. ## Good to know * The welcome grant fires **once per account**. Starting a second business — or starting one on an account that already received the grant — runs the gate against your real balance, with no new grant. * Businesses created through the [CLI](/cli) or the API skip the interview but run on the same v3 harness: the business's own agent writes the founding documents on its first pass. The same standing applies at creation (a Founder plan or a live trial, 12 credits), with **no welcome grant** on that path. ## Switching an existing business to v3 The classic (v2) harness is retired: its agents no longer run. A business still on it opens on its switch page, except on a Light plan, which keeps its classic dashboard. Any active or paused business can switch. Light plans cannot, and archived businesses cannot. Open the business: its page is the switch page. **Business Settings → Harness** also opens it. Press **Switch to v3** on the switch page to start the interview. If another founding interview is still in naming or interviewing, that one is closed (Start over) so this switch can start. An interview already on the review screen, already founding, or whose agent is mid-turn still holds the slot until it finishes. The classic business itself is unchanged until you finish this interview and press **Switch to v3** at the end. The agent already knows the business: it reads your live site and your business data, confirms what it found, and asks only what it cannot infer. It then writes the three founding files (pitch, brand, flow) describing the business **as it is today**. There is no idea to pitch and no renaming, and the interview consumes no credits. You read the three files, then press **Switch to v3**. That press runs the same standing gate as starting a business: a **Founder plan or a live trial**, and at least **12 credits**. A switch grants **no welcome credits** (the welcome grant fires once per account, at your first **Start the business** press). The Light plan cannot switch. Nothing is rebuilt: your site, products, checkout, inbox, tasks, balance and code all stay. The first v3 session reads the brief, the code and the live site, tidies the task list, and reports back. It changes nothing on its own. From then on the business runs like any v3 business: one main agent you steer by chat, a daily run, billed per agent turn. The takeover session's cost is measured per business, not a fixed published price. # Access the code on GitHub Source: https://docs.nanocorp.so/github-access Invite yourself or a developer to your business's code repository to edit it locally. This feature is currently available on plans of **\$120/month or higher** (120 credits per month or more). See [Plans and credits](/plans-and-credits) to upgrade. NanoCorp builds and maintains a dedicated code repository on GitHub for every business. On higher plans, you can get direct access to that repository from **Business Settings → Code Repository**: clone the code to your computer, edit it with your favorite tools (Claude Code, Codex, Cursor, VS Code,...), and push your changes back. Your business keeps running normally alongside. On plans below 120 credits per month there is no repository access. Support does not email, export, or share the source code. Access is self-serve from **Code Repository** once you are on a qualifying plan. Most people use this for one of two reasons: * **Work side-by-side with your NanoCorp.** Fix bugs, tweak copy, or add a feature yourself. Your business's agent picks up where you left off. * **You already have a developer who can help.** Invite them to the repository so they can contribute code directly. **Treat collaborators as full operators of your business.** Anyone you invite can push code that your business's agent will pull and run on its next task, inside the same sandbox the agent uses. That means a collaborator's code can read your business data, send emails on your behalf, take actions in Stripe, and use any other capability your agent has. Only invite people you would trust to run your business directly. ## How it works Each business has its own private repository on GitHub, managed by NanoCorp. You (or anyone you invite by their GitHub username) can be added as a **write collaborator**. Collaborators can read the code, edit it, and push changes back. They can't change repository settings or invite other collaborators, but the code they push is what your business's agent will run on its next task, so push access is effectively operator-level access to your business. ## Invite a collaborator In your conglomerate settings, pick the **\$120/month** plan or higher. See [Plans and credits](/plans-and-credits). From the business dashboard, open the menu and click **Business Settings**. Scroll to **Code Repository**. You'll see your repository's address on GitHub and the current list of collaborators (if any). Type the GitHub username of the person you want to invite (this can be your own), then click **Add**. GitHub emails that user a link to accept the invite. Once accepted, the status in the list changes from **Invite sent** to **Active**. Don't have a GitHub account? Create one free at [github.com](https://github.com), then invite your own username. ## After accepting the invite Open the repository link shown in the **Code Repository** section. From GitHub you can: * Clone the code to your computer with tools like GitHub Desktop, Claude Code, or Cursor. * Edit and push changes back to the repository. * Open pull requests if you prefer to review changes before merging. No special NanoCorp setup is needed. The repository works like any normal GitHub project. ## Invite status Each collaborator shows one of these statuses in the list: * **Invite sent**: the invitation was emailed, waiting for the person to accept. * **Active**: they've accepted and have access. * **Expired**: the invite wasn't accepted within **7 days** and is no longer valid. Remove the row and add them again to send a fresh invite. ## Remove a collaborator In the **Code Repository** section, find the user in the list and click **Remove**. They lose access immediately. ## Using an existing project If you already have an existing project you'd like NanoCorp to run, this is **not a supported self-serve flow today**. But we would love to support it! Reach out via the in-app **Support** chat or at [support@nanocorp.so](mailto:support@nanocorp.so) before you try. We'll discuss whether it's feasible for your project. # Welcome to NanoCorp Source: https://docs.nanocorp.so/index Autonomous businesses run by AI, making money while you sleep. NanoCorp is the platform to create and run autonomous businesses. Start with one prompt: an agent interviews you about your idea, then starts and runs an autonomous business that maximizes revenues while trying to avoid bankruptcy with no human intervention. New businesses on the web are created through the [founding interview](/founding-interview) — share your idea, answer a short interview, press **Start the business**. Prefer the terminal? Use the [CLI](/cli). Still on the classic (v2) harness? Its agents no longer run. Open the business to [switch it to v3](/founding-interview#switching-an-existing-business-to-v3). # Launch kit Source: https://docs.nanocorp.so/launch-kit Drafted launch posts, a playbook the platform verifies, and 5 + 5 credits for a verified launch. When your business's site goes live, NanoCorp writes your launch posts for you and keeps a short playbook of the things that get a new business its first visitors. Everything in it is either drafted from your own pitch and numbers, or verified by the platform. Nothing is claimed. The launch kit exists for businesses on the v3 dashboard. ## The three moments | Moment | When | What you get | | -------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | **Launch** | The first time your site is deployed | An X post (280 characters, links count as 23) and a LinkedIn post, written from your PITCH and your one-liner, in the language of your pitch | | **First sale** | Your first real sale to someone who is not you | Both drafts again, with the amount and the product. A toggle hides the amount | | **Weekly** | Mondays at 07:00 UTC, when the week was not empty | Your week in numbers: visitors, sales, what shipped. Also sent to you by email | The drafts land in three places: a card in the chat rail, the **Site** menu in the top bar (the persistent home), and, for the first sale, the celebration you see when the sale comes in. ## Editing and posting * Edit the text by hand; edits save on their own and are never overwritten. * **Rewrite…** takes a one-line instruction ("Shorter", "More casual", "In English") and is billed in credits at the real model cost, with a floor of 0.02 credits. Hand edits are always free. * **Built with NanoCorp** is an optional toggle, off by default. It appends a line with your referral link; credits never depend on it. * **Post on X** opens X with the text filled in. **Copy + open LinkedIn** copies the text and opens LinkedIn's share dialog, because LinkedIn does not accept prefilled text. * **Launch card · PNG** downloads a 1200×630 image of your launch (or your first sale) to attach to the post. The launch card carries a screenshot of your live site, refreshed weekly. ## How posts are verified * **X:** press **I posted it**. The platform searches recent posts that link to your site's address and finds yours. It keeps looking every six hours for two weeks, so a post found later still counts. * **LinkedIn and everything else:** paste the link to your post. The platform opens the page and looks for your site's address, a short link that resolves to it, or your business name on a LinkedIn page. * A post can only ever count for one business. A link that does not match stays greyed so you can try again. ## Credits A verified **launch** post on X earns 5 credits, and a verified launch post on LinkedIn earns 5 more. Each is granted once per account. An account that already earned the older X-verification bonus does not earn the X launch bonus again. First-sale and weekly posts record evidence but earn no credits. ## The playbook The **Launch** panel at the top of the Growth tab lists the steps, grouped into the first days after launch. The counter counts the steps the platform can verify or that your agent completes; reminders (sending the link to ten people, fifteen minutes of daily engagement) are listed but never scored. | Step | Who | How it completes | | -------------------------------------------------- | ---------- | --------------------------------------------------- | | Post the launch on X | You | Found on X | | Post the launch on LinkedIn | You | Pasted link, verified | | Share it in three communities | You | Three pasted links, verified | | Answer five questions where your product fits | You | Five pasted links, verified | | Post one build-in-public update | You | A further verified post, or a pasted link | | Put the first testimonial on the site | Your agent | The task the platform added to your Tasks completes | | Repurpose the launch as a second post | You | A further verified post, or a pasted link | | Email early users, thank them, ask what is missing | Your agent | The task completes | | Posts this week | You | Three verified posts in the trailing seven days | | Weekly progress post | You | This week's draft, verified | The Digest shows the same thing in one line: an **Announced** cell on the milestones strip once a launch post is verified, and a *Next* row that opens the step on the Growth tab. ## Turning the weekly post off The **Weekly post** toggle on the Launch panel stops the Monday drafts and the email. Turn it back on any time. # Plans and credits Source: https://docs.nanocorp.so/plans-and-credits Understand NanoCorp's plans and how credits work. ## Plans NanoCorp offers a free trial and two paid plans. Light is a retention plan: you'll only see it when your trial or plan ends (in the expiry email, the reactivate page, and the cancel flow) — it isn't on the pricing page. ### 3-day free trial Every account starts with a **3-day free trial of everything** — site hosting, email, checkout, and agents. No card needed. It includes: * **15 welcome credits**, granted the first time you press **Start the business** in the [founding interview](/founding-interview) — once per account, ever, no renewal. (A business created through the [CLI](/cli) or the API grants nothing: it needs the same standing at creation, so start your first business on the web to receive the welcome credits.) * 1 active business * A `nanocorp.app` domain * An `@nanocorp.app` email * Earn credits through referrals * An "Edit with NanoCorp" badge on your website * 20% fee on withdrawals When the trial ends, without a subscription, your shop goes **dormant**: * your **website stays up** — visitors see it as usual, with the NanoCorp badge, * payment links and checkouts show a "store closed" page instead of taking payments, * your custom domain (if you connected one) is released — the site keeps serving on its `nanocorp.app` address, * outbound email is paused — **inbound email keeps arriving and stays readable** in your dashboard, * agents stop running — including manual **Run** clicks and agent tools; queued tasks are frozen, not deleted. Nothing is deleted, and the CEO chat stays open. The same dormant rules apply when a paid plan ends. Reopening the shop (Light or Founder) restores everything within minutes: checkout, custom domain, email, and your frozen tasks resume. See [Billing, refunds and cancellations](/billing-policy). ### Light **Light (\$4.99/month) reopens the shop — without the AI.** It exists for one situation: your trial (or plan) ended and your shop went dormant, and you want the business itself running again. It includes: * **Checkout and payment links take payments again**; earnings and withdrawals work unchanged * Your **custom domain comes back** (dormant shops serve on `nanocorp.app`) * **Inbound email** plus **manual outbound sends** from your dashboard * **The NanoCorp badge is removed** from your site * 1 active business — if more than one is active when you switch, you choose which one stays live (the others pause, with their checkouts closed; nothing is deleted) What Light does **not** include: * **No AI**: no agents, no CEO cycles, no tasks, no CEO chat (your chat and task history stay readable) * **No credits and no top-ups** — buying and using credits requires Founder (credits you already have carry over and reactivate when you're on Founder) * No ads, no prospect discovery You can move from Light to Founder at any time from **Billing & Credits**; agents resume within minutes. Founders can also downgrade to Light from the cancel flow — the switch happens at the end of the current billing period, so you keep the AI you already paid for. ### Founder The Founder plan lets you pick a monthly credit tier: | Monthly price | Credits per month | | ------------- | ----------------- | | \$30 | 30 | | \$60 | 60 | | \$120 | 120 | | \$240 | 240 | | \$480 | 480 | | \$960 | 960 | | \$1200 | 1200 | | \$1400 | 1400 | | \$1600 | 1600 | | \$1800 | 1800 | | \$2000 | 2000 | Everything in Light, plus: * **Monthly credits that roll over** between billing periods * AI agents, CEO chat, and the task queue * Unlimited businesses * Ads and prospect discovery * 20% fee on withdrawals (Like Light, Founder has no "Edit with NanoCorp" badge — it's removed automatically within minutes of subscribing.) To upgrade, open **Billing & Credits** from the menu (or **Billing & credits** on v3, or **Manage plan** on Conglomerate HQ) and pick a tier in the **Plans** tab of the **Subscription** modal. To cancel, click **Manage subscription** at the bottom of the same tab, then **Cancel plan…**. Cancellation takes effect at the end of the current billing period. The Stripe customer portal has no Cancel button. Unused plan credits are not refunded in cash and do not transfer to another account or conglomerate; cancelling does not refund the remaining period. See [Billing, refunds and cancellations](/billing-policy). **Manage subscription** is also where you update your payment method and download invoices (**Update payment method** and **Billing history & invoices**). You can also reach the billing portal directly, without logging into NanoCorp, at [billing.stripe.com/p/login/14AcN6dhO9D1gXgakPeME00](https://billing.stripe.com/p/login/14AcN6dhO9D1gXgakPeME00). Enter the email on your NanoCorp account and you'll receive a one-time code to log in. From the portal you can update your payment method and download invoices. ## Top-ups Top-ups are one-time credit bundles for active subscribers. Use them when you need extra credits this month without changing your subscription tier. | Credits | Price | | ------: | ----: | | 10 | \$15 | | 20 | \$26 | | 50 | \$60 | | 100 | \$110 | Top-ups are priced above the subscription per-credit rate. Bigger bundles cost less per credit, so the 100-credit bundle is the best deal. **Top-up credits behave exactly like subscription credits.** They go into the same balance, are subject to the same daily cap, and roll over indefinitely. Cancelling your subscription does not wipe them. ### Eligibility Top-ups are available once both of the following are true: * Your subscription status is **active** (not trialing, past due, or canceled). * At least one subscription invoice has been paid. Buy a top-up from the **Top-Ups** tab inside the Subscription modal of any business dashboard. ### Auto top-up Auto top-up buys a bundle for you automatically so your businesses never stall on an empty balance. It is **off by default**. * When your credit balance drops below **4 credits**, NanoCorp automatically charges your saved card for the bundle you picked (10, 20, 50, or 100 credits, same prices as above). * At most **2 automatic charges per UTC day** — a fixed safety limit. If you hit it, you get an email and auto top-up resumes the next day; you can still buy bundles manually. * Every charge comes with a Stripe receipt, an invoice in your billing portal, and a confirmation email. Turn it on from the **Auto Top-Up** block at the bottom of the **Top-Ups** tab. A confirmation dialog shows the exact terms before anything is armed. If your balance is already below 4 when you confirm, the charge happens within about a minute. Eligibility is the same as manual top-ups (active subscription with a paid first invoice, plus a saved payment method). If your subscription lapses, auto top-up simply pauses — it never charges a non-active subscription — and resumes if the subscription becomes active again. **If a charge fails** (card declined, or your bank requires confirmation), auto top-up turns itself off and emails you. Update your payment method via **Manage Billing**, then turn it back on from the Top-Ups tab. You can turn auto top-up off yourself at any time. ## How credits work Credits are the currency that powers your businesses on NanoCorp. ### What consumes credits How credits are consumed depends on how your business was created: * **Businesses started through the [founding interview](/founding-interview)** (the default on the web) bill **per agent turn**. The founding turn that builds and ships your landing page costs about **9 credits**, a chat turn costs about **3–12 credits** depending on complexity, and the full "ship the product" build costs about **20 credits**. * **Older businesses on the classic harness** billed **per task** while their agents ran. That harness is retired, so a classic business bills nothing until it is switched to v3, after which it bills per agent turn. * **Premium tools**: some tools cost credits when called. Currently, the only premium tool is **lead enrichment** (finding email addresses), which costs **0.2 credits per enrichment**. On v3 businesses (started through the interview, the CLI or the API), every message you send starts a billed agent turn. The classic CEO chat is retired and no longer replies. ### Turns vs tasks at a glance | | v3 businesses (web interview, CLI, API) | Older businesses on the classic harness | | --------------- | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | Billing unit | **Agent turn** — founding ≈ 9 (web) or a modest first pass (CLI/API), chat turn ≈ 3–12, full product build ≈ 20 | Retired: it bills nothing until it is switched to v3 | | Chatting | Billed: every message starts a turn | Retired: the classic CEO no longer replies | | Welcome credits | **15**, once per account, at your first **Start the business** press on the web (none for a CLI/API creation) | **3**, once per account, at your first business | | Failed work | No automatic refund for a completed turn | Failed tasks from runs before the stop were refunded automatically | ### Where credits live Credits belong to your **conglomerate**, not to individual businesses. All businesses in your conglomerate share the same credit balance. You can check your remaining credits in the **Credits** panel of any business dashboard. Your business's agent can check the balance too (`nanocorp info credits`, read-only) and will tell you when it is running low. ### Tips to manage credits * **Pause unused businesses** to stop autonomous work you don't need. * On older task-based businesses: **set the Autonomy level** in the **Engine** panel to control how many tasks a business runs per day, or set a **conglomerate-wide daily credit cap** with **edit daily cap** in the **Credits** panel. **Failed tasks are refunded** automatically on these businesses. You may briefly see a deduction before the credit is added back. Interview-started businesses bill per turn and do not auto-refund a completed turn. Completed work is billed either way: there are no goodwill credits. See [Billing, refunds and cancellations](/billing-policy). Earn extra credits by referring others. Each business has a unique referral link in its referral section. You get **5 credits** when your referral completes their first task, and they get **5 credits** when they create their first business. # Tool rate limits Source: https://docs.nanocorp.so/rate-limits How often your business's agents can call each write tool before they're asked to slow down. Your business's agents can call most tools as often as they need to. A small set of write and paid tools are capped per hour and per day. The caps exist to protect every business and their agents from runaway loops, to keep costs predictable, and to make sure one runaway task can't exhaust the shared email or Stripe write budget for everyone. Limits apply **per business**. Every business in your conglomerate has its own counter. ## The limits Every call counts, even ones that end up failing. When either the hourly or the daily bucket is exceeded, the call is blocked and the agent receives the structured error below. | Tool | Per hour | Per day | | ---------------------------- | -------: | ------: | | `send_email` | 20 | 100 | | `create_product` | 10 | 50 | | `update_product` | 20 | 100 | | `delete_product` | 5 | 20 | | `create_document` | 30 | 200 | | `update_document` | 30 | 200 | | `set_vercel_env_vars` | 30 | 150 | | `get_vercel_build_logs` | 120 | 600 | | `get_vercel_runtime_logs` | 120 | 600 | | `get_site_status` | 120 | 600 | | `search_prospects` | 20 | 100 | | `verify_email` | 5 | 50 | | `generate_image` | 60 | 2000 | | `generate_svg` | 30 | 200 | | `landing_catalog` | 120 | 600 | | `landing_assemble` | 30 | 200 | | `landing_render` | 30 | 200 | | `get_meta_campaign_insights` | 30 | 300 | | `list_meta_campaigns` | 30 | 300 | | `get_company_domain` | 120 | 1000 | | `pause_meta_ads` | 10 | 40 | | `regenerate_meta_ad` | 10 | 40 | | `set_custom_domain` | 10 | 40 | | `clear_custom_domain` | 10 | 40 | | `check_custom_domain` | 120 | 600 | | `list_dns_records` | 120 | 600 | | `add_dns_record` | 20 | 60 | | `remove_dns_record` | 20 | 60 | | `file_upload` | 300 | 1000 | | `web_search` | 60 | 400 | | `web_fetch` | 60 | 400 | | `domain_search` | 60 | 300 | | `domain_checkout` | 15 | 50 | | `get_credit_balance` | 120 | 1000 | | `get_credit_usage` | 60 | 500 | | `submit_platform_feedback` | 30 | 100 | | `enable_user_auth` | 10 | 30 | | `rotate_user_auth_secret` | 5 | 10 | | `list_app_users` | 20 | 100 | | `app_users_is_owner` | 240 | 3000 | | `update_checkout_settings` | 30 | 100 | | `set_status_emails` | 10 | 30 | `submit_platform_feedback` (`nanocorp feedback`) additionally accepts at most 5 filed messages per business per day; past that it replies `rate_limited` and the message is not recorded. `web_fetch` counts one call however many pages it carries. Pass up to 10 URLs in a single call (`nanocorp web fetch ...`, or the `urls` array on the tool) and it spends one of the 60, while still costing 0.0011 credits per page. When your agent already knows which pages it needs, batching them is the difference between 6 and 60 units of research an hour. ## Which tools are uncapped Read-only tools don't hit the platform's external budgets, so your agents can call them freely. That includes `read_email`, `list_emails`, `mark_email_read`, `list_products`, `get_payment_link`, `get_revenue`, `list_documents`, `read_document`, `list_files`, `download_file`, `list_vercel_env_vars`, `get_analytics_summary`, `top_pages`, `top_events`, `top_referrers`, `events_over_time`, `get_company_info`, `update_mission`, `read_mission`, `create_task`, `update_task`, `delete_task`, `get_task_details`, `list_tasks`, and `search_tasks`. ## What your agent sees When a capped tool is over its limit, the tool call returns a structured error instead of running: ```json theme={null} { "error": "rate_limited", "tool": "send_email", "window": "hour", "used": 21, "limit": 20, "remaining": 0, "reset_at": "2026-04-21T15:30:00Z", "retry_after_s": 1847, "should_wait": false, "message": "Rate limit hit for send_email (21/20 in current hour). Window resets at 2026-04-21 15:30:00 UTC (in ~31 min). Since the wait is over 5 minutes, do NOT wait or retry in this run. This limit is a platform boundary, not an obstacle: do NOT circumvent it with curl, alternate search engines/APIs, or the browser. Record what you have and move on. The limit will reset on a future run." } ``` * `window` tells you which bucket was exceeded (`"hour"` or `"day"`). When both are over, this is the one with the longer wait. * `retry_after_s` is how many seconds until that window resets. * `reset_at` is the exact UTC instant that window resets, as ISO 8601. Use it to plan the rest of a batch on a later run instead of reading the date out of `message`. * `remaining` is how many calls are left in that window. It is always `0` in this payload, since you only receive it when the call was refused. * `should_wait` is `true` only when `retry_after_s` is at most 5 minutes. When it's `false`, agents should move on to other work and retry on a future run rather than sleeping. * Rate limits are a platform boundary, not an obstacle: agents should not route around them with curl, other search engines or APIs, or a browser. The expected behavior is to record what was already gathered, report the limit in the result, and move on. Every `message` carries that reminder. The `message` field is a ready-made, human-readable summary agents can act on without parsing the other fields. The numbers are **per business**, not per conglomerate. If a legit workflow runs into these caps, let us know via the in-app **Support** chat or at [support@nanocorp.so](mailto:support@nanocorp.so) so we can tune the defaults. # Add secrets to your business Source: https://docs.nanocorp.so/secrets Safely share API keys, passwords, and configuration values with your business's agents. Your business's agents sometimes need API keys, passwords, or other sensitive values to do their job. Maybe you want them to call a third-party API you pay for, log into a tool you manage, or use a service NanoCorp doesn't integrate with. The **Secrets** section of your business settings is the safe place to store those values. Once you've added a secret, your agents can use it automatically. You never have to paste the value in the chat. The Secrets section is the right place for this kind of information. Values are stored encrypted, just like in a password manager, so they stay safe. Your agents can reach for them automatically on every task, and they never appear in your chat history so you don't have to paste them again each time. ## What you can store Anything your business needs to do its work but shouldn't be visible in plain text, for example: * **API keys** for tools NanoCorp doesn't already manage for you, such as a Notion token, a scraping API key, or an SMS provider token. * **Passwords** for third-party tools your agent logs into. * **Configuration values** such as the ID of a Google Sheet, a webhook URL, or a feature flag. * **Any other environment variable** your agents need while they work. Each secret is a **key** (the name your agent refers to) paired with a **value** (the actual content). ## Add a secret From your business dashboard, open the menu and click **Business Settings**. You'll see the list of secrets you've already added (empty on a new business) and a form to add a new one. The key is the name your agents will use to find this secret. Use uppercase letters, numbers, and underscores only, for example `STRIPE_API_KEY` or `SENDGRID_TOKEN`. Keys are auto-capitalized as you type. Paste the actual secret (the API key, password, token, etc.) into the **Secret value** box. A short note like `"Stripe production key"` or `"Used for the mailing list API"` helps your agents pick the right secret when they have several to choose from. Keep it brief. The secret is stored encrypted and appears in the list above the form. Your agents can use it on their next task. A good description pays off. Your agents read it to decide which secret to reach for. A vague key like `TOKEN` with no description is hard to use well, while `SENDGRID_TOKEN` described as `"For transactional emails to customers"` is unambiguous. ## How your agents use your secrets You don't need to do anything special for your agents to pick up a secret. Once it's saved, every new task your business runs has access to it. You can ask your CEO things like: * "Add a new page to my Notion CRM using the token I saved." * "Send a daily SMS reminder via the provider token I added." * "Run a script that calls the weather API with the key from secrets." The agent knows which secrets are available (by key and description) and uses them where appropriate. Values are never shown back to you in the chat or anywhere else in the dashboard. That's by design, so secrets can't leak through conversation history. ## Secrets and your deployed site A secret saved here goes to **your agents**, not to your deployed website. Those are two separate places: * **Secrets** (this section) are available to your agents while a task runs. * **Your site's environment variables** are what your deployed app reads at runtime. Your agent manages those. So if your site's own code needs the value (say your app calls an API on every page load), saving the secret is not enough on its own. Just ask your CEO for it, for example: "Put my Gemini key in the site's environment and redeploy." The agent already has the value from your secret, so you never have to paste it again. Your site picks up a new environment variable on its **next deployment**, not immediately. A value copied onto your site then lives there on its own: deleting or replacing the secret here does **not** change your site's environment. When you rotate a key, ask your agent to update it on the site too, as a **new task**. A task that is already running still holds the old value and would put that one back. Not sure which you need? If an **agent** uses the value while working, the secret is enough. If your **live site** uses it while a visitor is on the page, ask your agent to put it in the site's environment too. ## Update a secret Values are **write-once**: once you save a secret, you can't view it again, and there's no edit button for the value. To change a value, **delete the existing secret and add a new one** with the same key. Your agents will use the new value on the next task. ## Delete a secret In the Secrets list, click **Delete** next to the secret you want to remove. It's gone immediately, with no confirmation step, so be sure before you click. Tasks that are already running keep using the value they started with. The next task your business runs will not see the deleted secret. ## Rules and limits * **Keys** must use **uppercase letters, numbers, and underscores**, must start with a letter, and can be **up to 64 characters** long. Examples that work: `API_KEY`, `DB_URL_2`, `MY_LONG_KEY_NAME`. Examples that don't: `my-key` (dash), `api key` (space), `1STKEY` (starts with a number). * **Values** can be **up to 32 KB** each, which is more than enough for any API key, password, or JSON credentials file. * Each business can store **up to 50 secrets**. If you hit the limit, delete secrets you no longer need. * Secrets belong to **one business**. If you have several businesses that need the same value, add it to each of them separately. ## Security * Values are encrypted at rest and only decrypted inside your business's sandbox when a task runs. * The dashboard never shows you the value after you've saved it. You can only read the key and description. * Activity events are recorded when secrets are added, updated, or removed (key and who did it, never the value). * Anyone with access to your conglomerate can manage secrets, the same way they can manage other business settings. **Collaborators on your business's GitHub repository can read your secrets at runtime.** Code they push runs inside the same sandbox as the agent, with the same access to your secrets. Only invite collaborators you fully trust. See [Access the code on GitHub](/github-access) for more context. ## Avoid keys that conflict with our managed tools NanoCorp already provides built-in integrations for several common categories. Your agents have purpose-built tools for those out of the box, and the platform handles billing, quotas, deliverability, and tracking on top. Use at your own risk. If you store a secret in a category NanoCorp already manages, your agent may reach for your key instead of the built-in tool. Platform features that depend on the managed integration (revenue tracking, deliverability, quotas, repository provisioning, billing) may stop working as expected for that task. Categories already managed by NanoCorp: * **Payments processor.** Built-in tools handle products, payment links, and revenue tracking on a managed account. * **Transactional email, outbound.** Outbound mail is sent through a managed sending domain so deliverability and reply handling stay consistent. * **Inbound mail.** Agents read your business's mailbox through a managed inbox. * **Model / LLM provider.** Agents call models through a NanoCorp proxy tied to your conglomerate's plan, so usage stays inside our billing and quotas. * **Deployment hosting.** The platform manages your deployed app and its environment variables. * **Code hosting.** The platform provisions and manages your business's repository, including collaborator access. If you still want to override one of these (for example, a personal sandbox account for testing), you can, just expect the agent to reach for your key first, and know that platform features built around the managed integration won't apply. ## Troubleshooting Messages you might see when saving a secret: * **"Use A-Z, 0-9, and underscores. Must start with a letter."**: the key has invalid characters. Remove dashes, spaces, dots, or accented characters, and make sure the first character is a letter. * **Save Secret button is disabled**: you haven't typed a valid key yet, or the value is empty. Fill both and try again. * **"Company has reached the 50-secret limit"**: delete a secret you no longer need before adding a new one. * **"A secret with this key already exists."**: you already have a secret with that exact name. Delete the existing one first, or pick a different key. Still stuck? Open the in-app **Support** chat, or email [support@nanocorp.so](mailto:support@nanocorp.so). # Support Source: https://docs.nanocorp.so/support How to get help with NanoCorp. > Need help with your account, billing, or a platform issue? Here's how to reach us. ## In-app chat (recommended) The fastest way to get help is the support chat inside your [dashboard](https://app.nanocorp.so). Open it from the **SUPPORT HELP** key in the Controls panel, or the **Support** item in the account menu. Our assistant (Margot) answers first, and you can ask for the team at any time. Live chat is included on the **Founder plan**. On the **Free plan**, the **Support** option opens an email to us instead (see below). ## Email You can reach us at [support@nanocorp.so](mailto:support@nanocorp.so) on any plan. This is the best option if you are on the Free plan or cannot sign in. ## What we can help with * Account and billing questions * Platform bugs and errors * Getting started with NanoCorp ## What's outside our scope * Debugging your specific business's output in detail * Third-party service issues unrelated to NanoCorp # Testing your checkout Source: https://docs.nanocorp.so/testing-payments Try your payment flow safely with a test link before real customers pay. Every business has **two checkout links**, and knowing which is which saves a lot of confusion: * **Live link.** Where real customers pay with real cards. Real money moves and it counts toward your revenue. * **Test link.** A separate URL for trying the flow yourself. No real money moves and test payments never count toward your revenue. Both are permanent NanoCorp URLs (`checkout.nanocorp.so`). They never change when products are added, renamed, or repriced, so you can share your live link once and it keeps working. ## The test card only works on the test link To try your checkout, open your **test link** and pay with Stripe's test card: **`4242 4242 4242 4242`** (any future expiry, any CVC, any ZIP). The test card only works on your **test link**. If you use it on your **live** link it will always be declined, because Stripe blocks known test cards in live mode. That decline is expected: it does **not** mean your store is broken. Just switch to your test link. ## Where to find your test link Open the **Business panel** on your business dashboard. Under **Links** you'll see an **All products** row (your live link) and a **Test payment** row (your test link). Use the **Test payment** link for testing. In your business chat, ask "How do I test my payment flow?" Your CEO will hand you the test link and the test-card details. ## What a test purchase does * Runs the full checkout and success page, exactly like a real one. * Shows up in your activity as a **test payment**. * Never charges a real card and never counts toward your revenue. ## Going live When you are happy with the flow, share your **live link** with real customers. Never put the test link on your public site. Not sure a real payment went through? Check your revenue and payment count in the Business panel, or ask your CEO in chat. ## Automated browsers and "Processing" hangs If you test your checkout with an **agent or automated browser** (such as having an AI agent test the flow), you may see the payment hang on **"Processing..."** indefinitely. This does **not** mean your store is broken. **What's happening:** Stripe blocks many automated and headless browsers as part of their anti-fraud measures. The checkout page detects the automation and parks the payment on "Processing" instead of completing it. **What to do:** 1. Open your **test link** in a **normal browser** (Chrome, Safari, Firefox, Edge) as a human. 2. Pay with the test card **4242 4242 4242 4242**. 3. The payment should complete successfully. If it works for you as a human in a normal browser, your checkout is working correctly. **Live customers using real browsers and real cards are not affected.** The "Processing" hang only affects automated testing tools. **Webhook delivery is unaffected.** NanoCorp handles all Stripe webhook events internally and forwards `checkout.session.completed` to your site at `/api/webhooks/nanocorp` after each successful payment. The automated-browser hang does not block webhook delivery for real purchases. # Sign in with NanoCorp Source: https://docs.nanocorp.so/user-auth Give your business's app real user accounts: your visitors sign in with a NanoCorp account, and your app receives their name, email, and picture — no password handling, no auth service to wire. Apps built on NanoCorp can offer **Sign in with NanoCorp**: visitors sign in with a NanoCorp account (creating one takes seconds), and your app receives their identity — name, email address, profile picture, and whether they own this business. One NanoCorp account works across every NanoCorp-built app. Ask your agent to "enable user auth and add sign-in to the site". It will enable the feature, install the SDK, and wire the pages. This page explains what happens underneath and what you can rely on. ## How it works NanoCorp runs the identity service (an OpenID Connect provider at `accounts.nanocorp.so`). Your app uses the open-source [`@nanocorp/auth`](https://www.npmjs.com/package/@nanocorp/auth) package, which handles the whole flow: the sign-in redirect, the callback, a secure session cookie on your app's own domain (7 days), and sign-out. Enabling the feature provisions your app's credentials and sets six managed environment variables on your deployment (`NANOCORP_AUTH_CLIENT_ID`, `NANOCORP_AUTH_CLIENT_SECRET`, `NANOCORP_AUTH_SESSION_SECRET`, `NANOCORP_AUTH_SESSION_SECRET_PREVIOUS`, `NANOCORP_AUTH_ISSUER`, `NANOCORP_AUTH_BASE_URL`). They are platform-managed: agents cannot overwrite them, and secret values are never displayed. ## What your app receives When someone signs in and consents, your app gets: their NanoCorp user id (stable), name, email address, profile picture, and an `is_app_owner` flag. The consent screen tells them exactly that, and that NanoCorp businesses are built and run with AI agents. Signed-in users are **sign-in identities, not a marketing list**. You are responsible for the personal data your app receives; use it to operate your product, not for unsolicited outreach (see the Terms of Service). ## Seeing your users The **Users** card on your business dashboard lists everyone who signed in to your app, with their last sign-in. Your agent can read the same list with the `list_app_users` tool. ## Owner-only areas The `is_app_owner` flag is true only for you (the owner of this business), so your app can ship an admin area. Rendering can trust the flag; anything that *changes* data goes through the SDK's `requireOwner()`, which re-checks ownership live with the platform on every call. ## Domains and sessions The session cookie is bound to your app's domain. If you attach or change a custom domain, existing app users are signed out at the next deploy and simply sign in again — nothing is lost. ## If your app's environment leaks Ask your agent to run `rotate_user_auth_secret` with `revoke_sessions=true`: all credentials are replaced and every existing app session becomes invalid at the next deploy. Without the flag, rotation is seamless (existing sessions keep working). ## Deleting an end-user account End-users of NanoCorp-built apps can ask us to delete their NanoCorp account at [support@nanocorp.so](mailto:support@nanocorp.so). # Withdrawals Source: https://docs.nanocorp.so/withdrawals Withdraw earnings from your businesses' real balance to your bank via Stripe Connect Express. When your business earns money from sales, it lands in your business's real balance. You can move that money out of NanoCorp to your bank account. ## Eligibility and fee * Your business must have a positive real balance (earnings from sales; not credits or promotional balance). * NanoCorp keeps a 20% fee on every withdrawal. The remaining 80% is sent to your Stripe account. * Example: you request a \$100 withdrawal. We keep \$20 as the platform fee and transfer \$80 to your Stripe account. * If your Stripe account is not a US bank account in USD, Stripe may apply additional fees for currency conversion and cross-border transfers. Those are Stripe's fees, not NanoCorp's, and they come out of the 80% net we send. See [the note below](#a-note-for-non-us-users) for details. ### A note for non-US users NanoCorp is a US-based platform and our balance is held in USD. We are happy you are using NanoCorp from outside the US, and we work hard to support as many countries as possible through Stripe Connect. There is one trade-off worth being upfront about: when your Stripe account is in a different currency (for example, EUR for accounts in France), Stripe applies its own fees when converting and moving the money internationally. These are Stripe's fees, not NanoCorp's, and they come out of the 80% net we send (not on top of it). What Stripe charges: * **Currency conversion**: about 2% on top of the mid-market exchange rate. * **Cross-border transfer**: 0.25% of the transferred amount on supported corridors (for example, US to the EEA). Worked example for a France-based Stripe account requesting a \$10 withdrawal: | Step | Amount | | ------------------------------------------------------------ | --------------- | | You request | \$10.00 USD | | NanoCorp fee (20%) | \$2.00 USD | | Sent to Stripe | \$8.00 USD | | Stripe currency conversion + cross-border fees (about 2.25%) | about \$0.18 | | Lands on your Stripe balance | about €6.75 EUR | Stripe then pays out to your linked bank on its automatic schedule, in your local currency. If your Stripe account is in USD (for example, US-based accounts), no currency conversion happens and only NanoCorp's 20% fee applies. ## Stripe Connect Express onboarding NanoCorp partners with Stripe Connect Express to handle identity verification, tax forms, and bank collection. You do not need a Stripe account beforehand. The first time you click **Request Withdrawal** we create a connected account on your behalf, using the email on your NanoCorp login, and send you to a Stripe-hosted form. Stripe will ask for: * Legal name or business details. * Date of birth (or the equivalent for a business). * Government ID. * Bank account details for payouts. Stripe decides which countries it supports for Connect Express. If Stripe does not support your country, onboarding will stop with a message from Stripe. We only create a Stripe Connect account when you actually request a withdrawal, and we reuse the same account for every future withdrawal. You do not need to onboard again on subsequent requests. ## Timeline We record the amount, breakdown (gross, 20% fee, net), and email you the onboarding link. You complete the Stripe-hosted form. It takes about 5 minutes. Verification usually takes seconds, but can take several hours if Stripe needs to review. During this time your withdrawal shows as "in progress" in the dashboard. Once Stripe confirms payouts are enabled, we process the platform-to-Stripe transfer. Small withdrawals are typically processed within 1-2 days. After the transfer, Stripe pays out to your bank on its default schedule. ## Status in the dashboard Open the **Business** panel on your business dashboard and click **Withdraw**. You'll see one of these states: * **No account yet**: clicking **Request Withdrawal** starts Stripe setup. * **Stripe is verifying your account**: you've submitted details but Stripe hasn't enabled payouts yet. * **Stripe payouts ready**: your next withdrawal will be processed and paid out to your bank by Stripe. * **In progress**: there is already an open withdrawal request. You cannot start a second one until the first is paid or rejected. If your onboarding link expired, just click **Request Withdrawal** again. We mint a fresh Stripe link on every click.