You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Guided Actor creation flow in apify create (parity with Console wizard) #1153
The Console is shipping a guided wizard (use-case → language → best-match template → where the source lives). We want the same guided experience in the CLI, so that developers and AI agents are led through Actor creation, and so a user who starts in the Console can hit "Clone locally" and continue seamlessly in the terminal.
This reshapes the existing apify create command rather than adding a new one.
Console wizard being mirrored
What do you want to build? — Web scraper · API & data pipeline · AI agent · Skip (show all)
Which language do you prefer? — JavaScript · TypeScript · Python · Other (bring-your-own runtime via Docker)
Here's your best match — recommended template(s)
Where will the source code live? — Apify · Connect GitHub/GitLab/Bitbucket (Apify creates the repo, builds on every push)
Confirm & install
Guiding principle
The wizard is an interactive flag-filler. Every step maps to exactly one flag. Humans answer prompts, agents pass flags, and the Console's "Clone locally" button emits the identical apify create … line. No flag is wizard-only; no step lacks a flag.
This single rule gives us human, agent, and Console-handoff support from one surface.
Reshaped apify create wizard (order mirrors the Console)
apify create
→ Name your Actor [actorName arg]
→ What are you building? [-u, --use-case] web-scraping · api-pipeline · ai-agent · skip
→ Which language? [-l, --language] JavaScript · TypeScript · Python
→ Here's your best match [-t, --template] recommended first; SKIP this prompt if the filter leaves exactly one
→ Where will the source live? [--source] Apify · GitHub · GitLab · Bitbucket
└─ (provider) → git connect flow
→ confirm / install
@inquirer/select per-choice description lines give us the Console's card subtitles (e.g. "Crawlee + Node.js. The most popular runtime on Apify.").
Agent:apify create acme -u web-scraping -l python -t python-crawlee --source apify --yes --json. Discovers valid enums via apify templates ls --json (exposes useCases[] + recommended) — never scrapes --help.
Console "Clone locally": emits that exact line with --origin console.
Git flow (--source <provider>) — resolved
The local scaffold is the source of truth; the Apify platform creates the repo from it, browser only for one-time provider auth.
1. collect choices
2. scaffold template → git init → initial commit ← local files exist immediately
3. ensure provider authorized → open browser to verify/authorize (one-time only)
4. Apify platform creates the repo on the connected provider,
creates the Actor (sourceType=GIT_REPO, gitRepoUrl), returns the remote URL
5. git remote add origin <url> → git push -u origin main
6. ✔ connected — Apify rebuilds on every push
Provider-agnostic: the browser does the auth, so --source github|gitlab|bitbucket just picks which connect URL to open — no per-provider code in the CLI.
Agent-safe: provider already authorized + no TTY → steps 3–5 run fully non-interactively. Not authorized → emit gitConnectUrl / nextSteps[] in --json and never block on a browser.
Notes & scope boundaries
"Import from Git" (Console's top-right button) = register an existing repo, not template scaffolding → tracked separately as apify actor connect-git / apify import. Out of scope here.
Activity
apify createwizard: use-case → language → best-match template #1236apify createmachine-readable output (--json,--origin) #1238apify templatescommand (list + JSON enum/recommendation discovery) #1239apify templatescommand (list + JSON enum/recommendation discovery) #1239apify create#1240feat: add `--source github` to create Git-sourced Actors (#1348)
feat: add GitLab and Bitbucket to `--source` (#1356)