Create a project
A project is a workspace-scoped unit that owns an artifact tree. Server-side it maps to a storage prefix in the hosted service; client-side it's pinned by a waypoint.json index file at the root of your repository. A project belongs to exactly one workspace, and you can belong to multiple workspaces.
You create a project with the CLI, from inside the git repository you want Waypoint to manage.
Run waypoint init
waypoint init --mode=<greenfield|characterize|rearchitect>
waypoint init is the onboarding orchestrator. Choose the mode that fits your situation:
greenfield— "Idea but no code yet." The agent walks personas → goals → features → architecture, writing one artifact at a time.characterize— "Working codebase you want captured." The agent reads your existing code and proposes the full artifact tree, inferring intent.rearchitect— "Product works but the implementation needs a redesign." The agent captures the product and intent and leaves architecture blank for redesign.
If you omit --mode, init auto-detects (a repo with no code files outside .waypoint/, .git/, and README is treated as greenfield; otherwise characterize) or prompts you.
What waypoint init sets up
Running init does the following, in order:
- Confirms you're authenticated (you must have run
waypoint loginfirst). - Resolves the onboarding mode (
--mode, auto-detect, or prompt). - Reads your git
originremote to infer the owner and repository name. - Creates the project under your workspace on the server.
- Walks the GitHub App install if the binding isn't already mapped.
- Writes
waypoint.jsonat the repository root — the manifest/index that pins each artifact by path and hash. - Installs pre-commit and pre-push git hooks that run
waypoint validateand upload artifact content. - Registers Waypoint as an MCP server for every detected agent client (Claude Code, Cursor, Zed).
- Installs the mode-specific agent skill.
- Extends
AGENTS.mdwith the Waypoint working block and writesWAYPOINT_USAGE.md. - Prints the mode-specific next step.
init is idempotent — re-running it is safe. Use --force to overwrite a waypoint.json whose slugs differ from the current project.
Project and workspace slugs. The project slug defaults to your lowercased git repository name; override it with --project. If you belong to a single workspace, it's selected automatically; multi-workspace users pass --workspace=<slug>.
The app renders your project
If you started from the in-app onboarding walkthrough, the web app polls for your new project and switches into the project view as soon as init creates it server-side. You don't need to refresh or create anything in the UI — the first project is created by the CLI, not a web form.
A "New project" button does appear in the web app once a workspace already has at least one project, but the first project in a workspace is always created via waypoint init. What the magic-link sign-in provisions on the server (workspace, defaults) is handled for you; the walkthrough assumes you land in a workspace with zero projects.
With the project created and waypoint.json written, you're ready to author your first artifacts.