{% extends "base.html" %} {% block title %}Setup — {{ instance_name or "AI Data Analyst" }}{% endblock %} {% block content %} {% include "_page_chrome.html" %}
{% set display_name = (user.name or (user.email or "").split("@")[0] or "there") %}
{% if onboarded %}
Welcome back, {{ display_name }} — your workspace is ready

You're set up — keep this page handy

Your local Agnes install is confirmed. The steps below stay useful for adding another machine, connecting more services, or turning on auto-accept mode. Skip whatever you don't need; nothing here re-runs unless you click it.

{% else %}
Welcome, {{ display_name }} — let's get you set up

Connect Claude Code on your machine to your team's data

{{ instance_name or "Agnes" }} gives Claude Code on your computer access to your team's curated data, plugins, and shared knowledge — so you can ask questions and get answers in plain language, right from your terminal. This page walks you through the one-time setup (~10 minutes). Everything it installs lives in your home folder (~/Agnes) and can be removed in one command.

{% endif %} {% if onboarded %}
Step 1, 2 & 3 done — Claude Code installed, auto-mode set, Agnes ready in ~/Agnes. The full install steps stay one click away under the offboard control below.
{% endif %} {% if not onboarded %}
Step 1 — install Claude Code
curl -fsSL https://claude.ai/install.sh | bash
{# P0-1 — terminal-howto disclosure. Two panels (unix / windows) that flip in lockstep with the install-cmd OS tabs above. #}
Don't have a terminal open? — show how

macOS: press + Space, type Terminal, press Enter.

Linux: press Ctrl + Alt + T (most distros), or open the apps menu and search "Terminal".

WSL: open the Windows Start menu, search "Ubuntu" (or your installed distro), press Enter.

Paste the command above with Ctrl + Shift + V (Linux/WSL) or + V (macOS), then press Enter.

Verify with claude --version. Sign in once with claude and complete the OAuth flow. Don't have a Claude license yet? See plan options on /setup-advanced (Pro / Max 5× / Max 20×).
{% if home_automode.show %}
Step 2 — turn on auto-mode (recommended before Step 3)
In the Claude Code session you just signed into, press Shift + Tab. Claude cycles modes: default → auto-accept edits → plan mode → default; the footer shows ⏵⏵ when auto-accept is on. On the first cycle to auto-accept, Claude asks whether to make it the default — say yes. Closed the session already? Run claude again, then press Shift + Tab.

Want full auto-approve including Bash? See YOLO mode on /setup-advanced — pairs --dangerously-skip-permissions with a reviewed ~/.claude/settings.local.json allowlist. Skip if you're not sure.
{% endif %}
Step 3 — install Agnes from inside Claude Code

Click the button — {{ instance_name or "Agnes" }} creates a 90-day login token, copies a ready-to-paste setup script to your clipboard, and a follow-up popup tells you exactly where to paste it. The script bootstraps everything in ~/Agnes once Claude Code receives it.

Valid 90 days · token stays in clipboard only
Or paste manually (preview the script)
{% with preview_mode=True %} {% include "_claude_setup_instructions.jinja" %} {% endwith %}
The preview above is the exact text the button copies; the placeholder is replaced with a real token at click time. Don't create ~/Agnes/Projects/ manually — the bundled plugin offers to set it up after install.
{% endif %} {# P1-6 — auto-detect badge is the PRIMARY affordance after the install-script copy: agnes-init's first POST to /api/me/onboarded flips state automatically and the page reloads. The manual "Mark me as onboarded" button below it stays as a fallback when auto-flip never lands. #} {% if not onboarded %}
Waiting for your first agnes pull — auto-detects within ~30 s of the setup script finishing.
{% endif %} {# Self-mark control lives inside the blue hero in both states. When onboarded, the install steps above are hidden so this is the only thing rendered below the lead paragraph. #}
{% if onboarded %} Wiped your workspace or want the full setup view back? {% else %} Already set this up? {% endif %}
{% if onboarded %} {# User-controlled minimize toggle for Connect-your-tools. Default OFF (section renders flat). State persists in localStorage so the choice is per-device. The agnes-init auto-flip of users.onboarded never triggers a collapse on its own — only an explicit click here does. The auto-mode block used to be a peer collapsible (`step3`); it now lives inside the install-hero as Step 2 and is not collapsible. #}
{% endif %}
{# Auto-mode card used to live here as a `
` reference block; moved into the install-hero as the new Step 2 so users enable it BEFORE Step 3's install runs ~20 commands. Gated by the same `home_automode.show` flag at the call site. #}
Connect your tools (Asana / Google Workspace / Atlassian)
{# P0-3 — title row + time-badge + post-copy hint. The hint container is rendered hidden; the JS reveals it after the copy succeeds, then auto-hides after 8 s. #}
Asana ~5 min · self-serve
Read tasks and projects, comment, create updates — Claude works alongside your project boards without leaving the terminal.
✅ Copied. Now paste into Claude Code — run claude in your terminal, then paste & press Enter.
Show prompt {# Asana prompt body sourced from app/web/connector_prompts.py (`asana_prompt()`). Same string the main setup script inlines in step 9, so the two surfaces stay in lockstep. #}
{{ connector_prompts.asana }}
📚 {# P0-3 + P1-8 — Google Workspace tile. Time badge warns when the operator hasn't provisioned a shared OAuth app (forces the user to set up GCP themselves, which is a ~20-min clickops detour). The gating-note + email-admin button appear in that same un-configured branch so the user has a way out before copying. #}
Google Workspace {% if gws_oauth.configured %} ~5 min · self-serve {% else %} ~20 min · admin help likely {% endif %}
Drive, Calendar, Gmail, Docs, Sheets, Chat — Claude reads and acts across your work account via the official gws CLI.
{% if not gws_oauth.configured %}
Heads up: your Agnes admin hasn't provisioned a shared Google Cloud OAuth app yet, so this connector needs GCP project setup (creating an OAuth client, enabling APIs). It's fastest to ask your admin first — the button below pre-fills the email.
{% endif %}
{% if not gws_oauth.configured and instance_admin_email %} {% endif %}
✅ Copied. Now paste into Claude Code — run claude in your terminal, then paste & press Enter.
Show prompt
{{ connector_prompts.gws }}
🎟️
Atlassian (Jira / Confluence) ~7 min · self-serve
Read and write Jira issues, search Confluence pages — Claude pulls ticket context and posts updates without leaving the workspace.
✅ Copied. Now paste into Claude Code — run claude in your terminal, then paste & press Enter.
Show prompt
{{ connector_prompts.atlassian }}

You don't need Agnes installed locally to browse what's available. Anything you bookmark or subscribe to will be there waiting after you set Agnes up.

🛠️
Going deeper — Advanced setup VS Code split-terminal layout, recommended Claude Code plugins (with copy-able install commands), multi-model second opinions (Codex + Gemini), custom skills + rules + hooks, project workflows, plan tier guidance.
{% if news_intro %}

What's new

Read more →
{{ news_intro | safe }}
{% endif %}
{# P0-2 — Post-CTA modal. Opens after the shared CTA include below has created the token + copied the script. _claude_setup_cta.jinja still owns the token request + clipboard write; this modal layers on top with a 3-step "where to paste" guide. Lives at body level so the home-mock styles don't bleed into it. #} {% if not onboarded %} {% endif %} {# Shared "Setup a new Claude Code" CTA behaviour — provides the JS that POSTs /auth/tokens, copies the rendered instructions to the clipboard, and falls back to a modal when the clipboard API is blocked. The button above (id="setupClaudeBtn") is the primary trigger. #} {% include "_claude_setup_cta.jinja" %} {% endblock %}