{% extends "base.html" %} {% block title %}Setup — {{ instance_name or "AI Data Analyst" }}{% endblock %} {% block content %} {% include "_page_chrome.html" %}
{# Homepage status frame — five counters with 24h/7d toggle. Two gates: (a) operator flag instance.home.show_status_frame / AGNES_HOME_SHOW_STATUS_FRAME (default on, evaluated in router and passed as `status_frame_enabled`); (b) the user being onboarded — fresh users see a clean install-hero before zero-value stats. Router skips `compute_home_stats` (saves the DB hit) when either gate is closed, so `home_stats` is None in that branch. #} {% if status_frame_enabled and onboarded and home_stats %} {% include "_home_stats.html" %} {% endif %} {% set display_name = (user.name or (user.email or "").split("@")[0] or "there") %} {# Install-hero renders only for not-onboarded users. Once `agnes init` POSTs /api/me/onboarded (or the user clicks the in-hero X) the hero disappears entirely — the rest of /home (connector tiles, news, etc.) stays. Offboarding escape hatch moved to a discrete strip below; see `.offboard-strip`. #} {% if not onboarded %} {# Getting Started renders FIRST in the not-onboarded flow as a collapsed-by-default
. Click the summary to expand the two-row map. First row anchors back to the install hero just below (#install-hero); second row leaves the page for /setup-advanced. Per-device dismiss X (data-dismiss-key) survives on the generic .home-card-close handler — selector widened in JS to accept
containers too. Disappears post-onboarding alongside the hero so the in-page anchor never dangles. #}
Getting Started Two quick next steps — click to expand
Setup {{ instance_brand }} in your Claude Code One-time install — walkthrough in the section below.
Go deeper into your AI workspace VS Code layout, recommended plugins, multi-model second opinions, custom skills + rules + hooks, project workflows.
Welcome, {{ display_name }} — let's get you set up

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

{{ instance_brand }} gives Claude Code on your computer access to your team's curated data, plugins, third-party tools (Asana, Google Workspace, Atlassian), 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); the install script also connects your tools for you, so there's no extra page to visit. Everything it installs lives in your home folder (~/{{ workspace_dir }}) and can be removed in one command.

What leaves your machine. Session telemetry — prompts, tool calls, and tool responses — flows back to the central catalog so the team can analyse failure patterns. Raw data rows you query locally stay on your machine; only the prompt/response transcript travels. Need a session off the record? Toggle Private in Claude Code (by typing /agnes-private) to disable telemetry for that chat — nothing from that session reaches the catalog.

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×).
Step 2 — create your workspace folder
mkdir -p ~/{{ workspace_dir }} && cd ~/{{ workspace_dir }}
This is where {{ instance_brand }} will live. Run the command in the terminal you opened for Step 1, then keep that terminal handy — Step 3 launches Claude Code from this same directory.
{% if home_automode.show %}
Step 3 — start Claude Code with permission-skip (recommended before Step 4)
The Step 4 paste runs many shell commands (CLI install, workspace bootstrap, marketplace clone, MCP register, connector logins). Launch Claude Code from your Step 2 directory with this flag so the setup completes without ~20 Yes/No prompt approvals:
claude --dangerously-skip-permissions
Session-scoped — drops on next plain claude. Safe here because the script you paste in Step 4 is generated by this server and ends after a fixed sequence; the flag does not weaken future Claude sessions. Prefer reviewing each command? Run plain claude and press Shift + Tab to cycle on auto-accept edits (default → auto-accept edits → plan mode; footer shows ⏵⏵). Covers file edits, not Bash — expect ~20 prompt clicks during Step 4.

Persistent YOLO (allowlisted): see YOLO mode on /setup-advanced — pairs --dangerously-skip-permissions with a reviewed ~/.claude/settings.local.json allowlist.
{% endif %}
Step 4 — install {{ instance_brand }} from inside Claude Code

Click the button — {{ instance_brand }} 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 ~/{{ workspace_dir }} 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 ~/{{ workspace_dir }}/Projects/ manually — the bundled plugin offers to set it up after install.
{# 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. #}
Waiting for your first agnes pull — auto-detects within ~30 s of the setup script finishing.
{# Self-mark fallback for the auto-flip. The hero's X close button does the same thing more visibly; both target the not-onboarded → onboarded direction. The onboarded → offboarded variant lives below the hero (.offboard-strip) so it stays reachable once the hero is gone. #}
Already set this up?
{% endif %} {% if onboarded %} {# Offboarding escape hatch shown only after the hero has disappeared. Lets the analyst (e.g. after wiping ~/FoundryAI) flip the users.onboarded boolean back to false so the full install hero renders again on next reload. Discrete by design — onboarded users land on /home expecting the nav hub, not a setup screen. #}
Workspace ready — wiped it and need the full setup view back?
{% 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. #} {# Getting Started was previously rendered HERE (between the offboard strip and Overview) as a full-card
. Moved up to render BEFORE the install-hero as a collapsed-by-default
— see the block right after `{% if not onboarded %}` near line ~1357. #} {# Overview section — operator-owned, opt-in. Body comes from the `instance.overview` yaml field via get_instance_overview() (`AGNES_INSTANCE_OVERVIEW` env override). Empty value hides the whole section, keeping the OSS vendor-neutral. #} {# Overview is operator-owned reference content, not per-user chrome — no dismiss button on purpose. A one-time per-device hide would mean returning users who wanted to re-read the privacy posture / telemetry policy can't get back to it without clearing localStorage. The whole section is opt-in at the operator level (empty yaml → section absent), which is the right axis of control. #} {% if config.INSTANCE_OVERVIEW %}

Overview

{{ config.INSTANCE_OVERVIEW | safe }}
{% endif %} {# Usage modes — Terminal / VS Code / Claude Desktop · claude.ai. Generic OSS-shipped copy linking to /setup and to /setup-advanced anchors. Helps onboarded users find the right surface once they know which workflow fits them. #}

Where you can use {{ instance_brand }}

Same workspace, three surfaces. Pick whichever fits your flow — all three share the same plugins, data access, and credentials.

{# Terminal tile is informational — the setup hero above already walks through the Claude Code CLI install, so a click-through here would round-trip back to content the user just scrolled past. Rendered as a non-anchor div; hover/cursor styles only apply to the anchor variants below. #}
Terminal Default. Run claude from any project under ~/{{ workspace_dir }}. Lowest overhead, fastest feedback loop.
VS Code Split-terminal layout — conversation on one side, diffs and tool output on the other. See Go deeper for the recommended layout. Claude Desktop / claude.ai Connect this {{ instance_brand }} instance's plugin marketplace to your Claude Desktop or claude.ai account — same plugins, no terminal required.

For the deepest integration, create every project under ~/{{ workspace_dir }}/Projects/ — existing or new. The bundled plugin keeps each project in sync with the central catalog automatically, and the session-analysis loop is scoped to that root.

{# Connectors `
` block removed — the install-hero's Step 4 clipboard payload (rendered via `_claude_setup_instructions.jinja` inside the "Or paste manually" fallback) already inlines the same Asana / GWS / Atlassian prompts from app/web/connector_prompts.py via app/web/setup_instructions.py::_connectors_block. Showing them a second time as standalone cards duplicated UX without adding reach — the install script visits them all in sequence. Brief mention in the install-hero lead paragraph above covers the benefits ("third-party tools (Asana, Google Workspace, Atlassian)"); deep ops live in /setup-advanced. #}

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

{# Legacy `.advanced-pointer` row removed — same link now lives in the Getting Started card at the top of /home. `.advanced-pointer` CSS (~line 721) is harmless dead style; left in place to keep this diff focused. #} {% 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 %}