Getting started with Scarif One
Reading time: 25 minutes. Hands-on time: 45 minutes. What you'll have at the end: a running Scarif One instance, your brand voice configured, your store connected, and one ad creative generated and ready to publish.
No prior experience with Docker, APIs, or AI tools required. Anything that uses jargon explains the jargon first.
Before you start
You need three things in front of you:
- A computer that stays on. A Mac mini, an old laptop you leave plugged in, or a Linux VPS. If you switch off the computer, Scarif One switches off too. Most customers run it on a Mac mini in a cupboard for Β£15/month of electricity.
- A Google account. You'll get a free Gemini API key from this. Gemini is the AI brain that writes your ad copy and generates your images. The free tier is generous β you'll hit hundreds of generations a month at zero cost.
- One product photo. Just one to start. PNG or JPG. Doesn't have to be perfect β we'll generate variations from it.
That's it. You don't need a Shopify store yet (you can connect one later), you don't need a Meta ad account (also later), you don't even need a website. We'll build out from whatever you have.
The 10-minute decision: hosted or self-host?
| Hosted | Self-host | |
|---|---|---|
| Cost | Β£49/month with 14-day free trial | Β£999 one-time + Docker electricity |
| Setup time | 5 minutes | 15 minutes |
| Where your data lives | Our servers (encrypted, GDPR-compliant) | Your computer |
| Updates | Automatic, instant | You control when to update |
| Best for | Small business owners who just want it working | Privacy-conscious, regulated industries, people who own their stack |
Recommendation: start with the hosted 14-day trial unless you already know why you want self-host. You can migrate from hosted to self-host later (we have an export tool that ships your tenant data as a Docker volume).
This tutorial covers both paths. Pick yours and follow the relevant section.
Path A β Hosted (5 minutes)
Step A1: Create your account
- Open
https://scarifone.comin any browser. - Click Start free 14-day trial in the top-right.
- You'll see a form with three fields:
- Email β this becomes your login. Use one you actually check.
- Business name β what your customers know you as. Don't use a legal entity name unless that's what's on your storefront.
- Subdomain β this is the URL you'll log into forever. If your business is "Acme Coffee" type
acmeand your URL becomesacme.scarifone.com. Lowercase letters and dashes only.
- Click Continue to checkout.
- Stripe Checkout opens. You'll see "Β£0 for 14 days, then Β£49/month". Enter your card details. You won't be charged today. The card is on file so the trial converts seamlessly if you don't cancel β and you can cancel any time during the trial with one click.
- After checkout, you'll be redirected to
https://yoursubdomain.scarifone.com/login.
Step A2: First login
- Check your email for a magic-link. It arrives within 30 seconds. Subject: "Your Scarif One login link."
- Click the link. It logs you in directly β no password to remember.
- You land on
/setup. Skip ahead to Part 2 β your brand profile below.
Didn't get the email? Check spam. If still missing, our system prefers a Resend-validated
Fromaddress β if you self-hosted you'd configure it; on hosted we handle it. Emailsupport@scarifone.comand we'll send a manual link.
Path B β Self-host (15 minutes)
Step B1: Install Docker
Docker is the program that runs Scarif One in an isolated container so it doesn't conflict with anything else on your computer.
On a Mac: download Docker Desktop from https://www.docker.com/products/docker-desktop. Install it. Open it. You'll see a whale icon in your menu bar β that means Docker is running.
On Linux: run curl -fsSL https://get.docker.com | sh and follow the prompts. Then sudo usermod -aG docker $USER and log out + back in.
On Windows: download Docker Desktop, install it, enable WSL 2 when prompted (it's the default).
To check Docker is working, open Terminal (Mac/Linux) or PowerShell (Windows) and run:
docker --version
docker compose version
You should see version numbers for both. If you get "command not found", Docker isn't installed correctly β go back to the install step.
Step B2: Get a Gemini API key (free)
- Open
https://aistudio.google.com/apikeyin your browser. - Sign in with any Google account.
- Click Create API key. Pick Create API key in new project if it asks.
- Copy the key. It looks like
AIzaSyAβ¦β about 39 characters long. - Paste it somewhere safe (Notes, password manager). Treat it like a password.
What does this key do? Every time Scarif One writes ad copy, generates an image, drafts an email, or replies to a review β it sends a request to Google's Gemini AI using this key. Google bills you (the key owner). The free tier covers most small-business use easily; if you blow past it Google will send you an email and gently throttle.
Step B3: Run the installer
Open Terminal again. Paste this and press Enter:
curl -fsSL https://raw.githubusercontent.com/Scarif-One/scarif-one/main/scripts/install.sh | bash
The installer:
- Confirms Docker is installed (you've already done that)
- Creates
~/scarif-one/as the install directory - Downloads
docker-compose.yml(the Docker recipe) and.env.example(the config template) - Asks you to paste your Gemini key. Paste it from Step B2.
- Pulls the latest Scarif One image from GitHub Container Registry
- Starts the container
Total time: ~3 minutes depending on your download speed.
When it's done you'll see:
π Scarif One is running.
Open: http://localhost:3000
Data: /Users/yourname/scarif-one/data
Logs: cd /Users/yourname/scarif-one && docker compose logs -f
Step B4: First-run wizard
- Open
http://localhost:3000in your browser. - The first time you visit, the app sees no brand profile exists and redirects you straight to
/setupβ the first-run wizard. - Walk through the wizard's 5 steps (covered in detail in Part 2 below).
- The last step asks you to set an admin username + password. Choose a real password β you'll use these on every future login. No "bootstrap code" pattern; you create your own credentials right here.
- Click Save + activate. The wizard saves the profile, creates your admin account, signs you in automatically, and drops you on the dashboard.
Forgot your password later? Self-host: edit
data/tenants/default/auth.jsondirectly (it's a JSON file). ThepasswordHashfield is argon2 β to reset, delete the user object and re-run the/setupwizard fromhttp://localhost:3000/setup(it creates a fresh admin if one's missing).
Part 2 β Your brand profile (5 minutes)
Both Hosted and Self-host paths land here next. This is the most important screen in the whole product β every ad, email, and reply is generated through the lens of what you fill in here.
You're at /setup. You'll see a form with sections.
Section: Identity
| Field | What to put | Why it matters |
|---|---|---|
| Business name | Your storefront name. "Acme Coffee" not "Acme Holdings Ltd." | Appears in ad headlines, email signatures, and the dashboard top bar. |
| Founder name | Your first name (or whoever fronts the brand). "Sarah" not "Sarah Smith." | Powers founder-direct ads ("Hi, I'm Sarah, and I made this forβ¦"). The single biggest converting concept type. |
| Website URL | Your live storefront. https://acmecoffee.com. | The AI uses this for the brand-voice scan in the next stage. |
| Tagline (optional) | One line. "Roasted in Brighton, brewed everywhere." | Used in image overlays + email subject lines when generating bulk drafts. |
Section: Visual identity
| Field | What to put |
|---|---|
| Logo | PNG with transparent background ideal. SVG works. Drag-and-drop the file. |
| Primary colour | Your dominant brand colour. Click the swatch to open the colour picker, or paste a hex code (e.g. #a31b1b). |
| Secondary colour (optional) | A complementary accent. Used for highlights and CTAs in generated emails. |
The dashboard theme switches to your primary colour the moment you save. If everything turns coffee-brown, that's correct.
Section: Locale
| Field | What to put |
|---|---|
| Country | Where most of your customers are. Drives currency, free-shipping defaults, and the cultural reference set the AI uses. |
| City / Region | Optional but recommended. Unlocks landmark backdrops β AI generates ad images with your local landmarks (e.g. "model holding our coffee in front of Brighton Pavilion"). Hugely effective for local commerce. |
| Currency | Auto-fills from country. Override only if you sell in a different currency to your geography. |
Section: Commerce defaults
| Field | What to put |
|---|---|
| Free-shipping threshold | The cart value above which you offer free UK/US shipping. Your AI-drafted emails reference this number ("Spend Β£50, ship free"). Get this right or you'll send misleading ads. |
| Shipping note (optional) | One line. "Β£3.50 standard, free over Β£50, next-day on orders before 2pm." |
Hit Save
You'll see a green toast: Brand profile saved. Your dashboard re-renders in your brand colour. You're now redirected to /onboarding β the 5-stage new-user wizard.
Part 3 β The onboarding wizard (10 minutes)
Five stages. Each one takes 1-3 minutes. You can skip any stage and come back to it later from /setup or /integrations. The wizard remembers what you've done.
Stage 1 of 5 β Welcome (30 seconds)
You'll see a hero card explaining the next 10 minutes. Read it, click Continue.
Stage 2 of 5 β Connect your store (3 minutes)
This is where we pull your products so AI can write product-aware ads.
You'll see two big buttons:
- π I have a Shopify store β opens the Shopify integration tutorial inline.
- No store yet β skip β you can still generate generic ads. Your "products" become your services or content.
If you click Shopify, you'll see a step-by-step:
- Sign in to your Shopify admin.
- Settings β Apps and sales channels β Develop apps β Create an app called "Scarif One."
- Configure Admin API scopes β tick:
read_products,read_product_listings,read_customers,read_orders,read_inventory,write_files. - Save β Install app β click Reveal token once (you only see it ONCE β copy immediately).
- Paste the token + your
.myshopify.comdomain into the form below.
Click Test connection. Within 5 seconds you'll see:
β Connected to "Acme Coffee"
First sync: Acme Coffee Β· 47 products Β· 2,341 customers
Click Save + connect. The wizard advances.
Test failed? The error message is verbose on purpose. Common issues:
- "401 Unauthorized" β token is wrong, regenerate in Shopify (Apps β API credentials β Rotate)
- "403 Forbidden on /products" β you forgot to tick
read_productsscope, edit the app + reinstall- "Use the .myshopify.com domain" β you pasted your custom domain, use the technical one (e.g.
acme.myshopify.com, notacmecoffee.com)
Stage 3 of 5 β Brand voice (4 minutes)
This is the part most customers underestimate, and the one with the biggest payoff. Your brand voice is the master prompt every AI call gets. Get it right and your ads sound like you. Get it wrong and they sound like every other AI-written ad on the internet.
You'll see four paths. Pick one:
Path 1: AI scan (2 min, recommended for established brands) We scrape your website + extract pages with the most distinctive copy. The AI drafts a brand-voice document from what's already there β your tone, your phrases, your worldview. You then edit it.
Click Run AI scan. A progress bar fills as we crawl 5-15 pages. You'll get a markdown document like:
# Acme Coffee brand voice
## Tone
Warm, slightly defiant. Anti-corporate. Values craft over scale.
## Phrases we use
- "Made for the morning person who refuses to compromise"
- "Brewed by humans, not robots"
β¦
## Phrases we never use
- "Synergy", "leverage", "best-in-class"
- Anything that sounds like a stock photo
β¦
Edit it. The more specific you get, the better the output. Spend 10 minutes here, save 100 hours later.
Path 2: Paste a doc (1 min, for brands with an existing brand book) If you already have a brand-voice document β paste it in. Markdown or plain text both work.
Path 3: 5-question interview (3 min, for brands without an existing voice) The AI asks you five questions:
- Describe your customer in one sentence.
- What do they say to themselves before buying?
- What three adjectives describe how you sound?
- What three adjectives would you NEVER want to sound like?
- Pick a competitor. What do they sound like that you want to be different from?
The AI drafts a brand-voice document from your answers.
Path 4: Write your own (0 min, for brands who know exactly what they want) Empty markdown editor. Type what you want. Save.
Whichever path you pick, the next screen shows your brand-voice document. Edit it. Add specific phrases you use, products you've named, regional dialect words. The AI uses every line of this verbatim.
Click Save brand voice. Wizard advances.
Stage 4 of 5 β Channels (2 minutes)
You'll see four channel cards: Meta, Klaviyo, Judge.me, and a "See all 9" link.
You can skip all of them. You can ship your first ad without any channel connected β we'll generate the assets and you download them as a zip.
But for the typical small-business user, connect one of:
- Meta if you'll publish to Facebook + Instagram
- Klaviyo if you do email marketing
- Judge.me if you collect product reviews
Each card opens the same tutorial-modal pattern as the Shopify step. Step-by-step, copy buttons, real Test button, verbose errors.
Want all 9? Click See all 9 integrations to jump to /integrations. Mailchimp, Google Ads, TikTok, Pinterest, LinkedIn each have full step-by-step tutorials too.
Click Continue when you've connected the ones you'll use today.
Stage 5 of 5 β Generate your first ad (5 minutes)
This is the moment of truth.
You'll see a card with three fields:
| Field | Example |
|---|---|
| Pick a product | Dropdown of products pulled from Shopify (or "Create generic" if you skipped). |
| Concept type | Hero, founder-direct, ingredient close-up, in-context, UGC quote, landmark backdrop, process shot, customer quote, floating product. Pick one β try Founder-direct or Hero for your first time. |
| Audience | "Young professionals into specialty coffee" β one short line. |
Click Generate.
What happens next:
- The approval gate fires. A pulsing βΈ widget appears in the bottom-right. The system has paused before spending tokens, asking you to confirm. This happens for every AI-spend action β your costs are visible and gated.
- Click the widget. You see a card showing:
- Estimated cost: ~Β£0.04 (Flash Image + Pro 2.5 copy)
- What will be generated (1 ad copy, 1 image)
- Approve / Reject buttons
- Click Approve. The widget collapses to a green β for 2 seconds.
- The ad starts generating. You see:
- Copy first (~3 seconds)
- Image second (~10-15 seconds)
- Both land in the gallery on
/create/ad-creatives.
You now have your first ad. Look at it. Read the copy. Look at the image. Does it sound like you? Does the image fit your brand?
If yes: keep this energy. The rest of the product is built around scaling this.
If no: edit your brand voice doc. The AI re-reads it on every generation. The fastest way to fix bad outputs is better inputs.
Click Complete onboarding. You're done.
Part 4 β What to do next
You're now at the dashboard (/). You'll see ~30 tiles. Don't try to use all of them today. Here's the order I'd suggest for week 1:
Day 1: Shore up the foundations
/integrationsβ connect any remaining channels you'll use. Each takes 2-10 minutes./setupβ add 5-10 local landmarks if you're doing place-based ads ("Brighton Pier", "Devil's Dyke", "Royal Pavilion"). Unlocks the landmark backdrop concept type./spend-capsβ set per-day and per-month Β£ ceilings on AI spend. Defaults are conservative (Β£5/day for free, Β£25/day for Pro). The system auto-pauses when you hit them. You will not get a surprise bill.
Day 2-3: Generate volume
/create/ad-creativesβ generate 5 more ads across different concept types. Compare what works./create/emailβ draft a campaign. Pick a product, pick an angle, watch the AI produce subject + preheader + HTML body./products/ad-trendsβ research what's working in your niche. AI scans your competitors and reports the angles converting right now.
Day 4-7: Connect the loop
/publishβ schedule your generated ads + emails. Multi-channel queue with per-channel preview./analyticsβ once you publish, performance data flows back here. Per-asset revenue attribution./strategyβ every Monday morning, the AI writes you a one-page memo: "Here's what worked last week, here's what to try next."
Permanently: the bug widget
Bottom-right of every page is a π icon. Use it.
If anything looks weird, breaks, or you don't understand β click π, drag a screenshot in, type one sentence. The AI auto-triages severity and category. We see it within 5 seconds. Most bugs get fixed within 24 hours.
The bug widget is the single most important feature for your relationship with us. Every bug you file gets fixed for every customer at the same time β same software for everyone, no special-casing.
Common stumbling blocks (and the fix)
"My ads sound generic"
Your brand voice doc is too generic. Edit it. Add 5 specific phrases you say in real life, 3 you'd never say, and one paragraph describing how a competitor sounds and why you don't want to sound like them. Re-generate.
"The image doesn't look like my product"
The first generation uses your store catalog photo as a reference. If your catalog photo is bad (poor lighting, white background only), so is the output. Upload better source photos to /brand/assets and re-generate β the system reaches for the highest-quality reference automatically.
"I'm worried about cost"
Open /spend-caps. Set a Β£5/day cap. The system physically cannot spend more β every AI call is wrapped in a budget check. Open /admin/health to see exactly what's been spent in the last 7 days. Open /settings/quality to verify everything's set to Flash (the cheap model) by default; only one task uses Pro.
"I don't see my Shopify products"
Two possibilities:
- The integration test passed but the sync hasn't run yet β wait 60 seconds, refresh
/products. - Scope mismatch β you're missing
read_products. Reconnect from/integrations.
"The approval gate is too aggressive"
Open /approvals. There's a per-feature toggle: text generations can auto-approve, image generations always need approval. Adjust per your tolerance. My recommendation: keep image gens always-approve β that's where 80%+ of your AI cost lives.
"I don't know what to generate"
Open /concierge. It's a 90-second autonomous agent: it reads your brand voice, your top-3 products, your locale, your channels, and proposes the next 7 days of content. You approve, it queues. Best feature for "blank-page paralysis" days.
You've made it
That's the foundation. You have:
- A running install
- A brand voice the AI uses
- A connected store
- One generated ad
- Spend caps to protect you
- A bug widget for everything else
The rest of the product is depth on those primitives. Take it one feature at a time β there's no rush.
Where to next? Read tutorials 02-08 in this folder. Each one covers one major feature in the same depth. They're designed so you can dip in when you're ready for that thing β not all at once.
If anything in this tutorial was unclear, hit the π widget on any page and tell us. Tutorials get fixed the same way features do.