Open Your First Project
Open a folder as a Daintree project, what changes when it is a Git repository and what still works when it is not, initializing a repository, and opening a folder from your file manager or the command line.
Opening your first folder
Open a folder from File > Open Directory… (Command-O Control-O Control-O ), from Open folder on the Welcome Screen, or with the project switcher in the toolbar.
A project no longer has to be a Git repository. The picker's title is Open Folder, not "Open Repository", because that requirement is gone. Point Daintree at any folder and it opens as a lightweight workspace.
One thing to know before you choose: worktrees are Git worktrees, so running your first parallel task needs a repository. If you are following the getting-started path and the folder has none yet, take Initialize repository here rather than Open without git.
Open without git
Choose Open without git and you get a workspace immediately. Terminals, agents, recipes, and the file browser all work. Worktrees, review, and diffs stay unavailable until the folder becomes a repository, because there is nothing for them to operate on. The sidebar shows a single Workspace row instead of a worktree list, and there's no branch chip and no Project Pulse. Nothing in the folder is changed either way. Projects covers the git-optional tier in full, including how to upgrade a workspace later.
Initialize repository
Choose Initialize repository and you land on the Set up project dialog. It collects three things:
- Project name and emoji. Both are seeded from the folder name and both are editable. The emoji is how you'll recognize the project in the switcher and the toolbar.
- Gitignore template. Eleven options, defaulting to Minimal.
- Initial commit. A checkbox, on by default, with an editable commit message.
The gitignore templates:
| Template | Covers |
|---|---|
| Minimal (default) | OS junk, editor state, secrets, agent state |
| Node / TypeScript | node_modules, build output, caches |
| Python | __pycache__, virtualenvs, tooling caches |
| Rust | target/, rustfmt backups |
| Go | binaries, test output, workspace files |
| Java / JVM | Gradle and Maven output, class files |
| PHP / Laravel | vendor/, storage, compiled assets |
| Ruby on Rails | logs, tmp, bundler, credentials keys |
| C# / .NET | bin/, obj/, user files |
| Static web | build output, tool caches |
| None | Don't create a .gitignore at all |
Every language template is composed on top of Minimal, so picking Rust still ignores your .env and your editor's scratch files. A progress log shows each step ( git init, the gitignore, the first commit) as it runs.
Creating a project from scratch
Create project on the Welcome Screen opens Create project folder instead: pick a parent directory, type a folder name, and choose an emoji. The emoji auto-suggests from the name you type until you pick one yourself, and the identity carries through into the git setup dialog. The folder is created, then opened.
Once a folder is open, Daintree scans for existing worktrees and loads any saved state: terminal sessions, panel layout, recipes.
Other ways to open a folder
Every route below lands in the same place, including the choice dialog when the folder isn't a repository.
- File > Open Recent. Recently opened projects, sorted by when you last opened them, each showing its path so you can tell two
apifolders apart. - Drop a folder on the macOS Dock icon. Registered by signed builds only, so a locally built copy won't do it.
- The
daintreecommand, covered below.
"Open in Daintree" in your file manager
macOS won't let an app bundle declare a Finder service, so this one is installed on
demand: Terminal > Install "Open in Daintree" Quick Action. That
writes an Automator workflow to ~/Library/Services and refreshes the
services cache. Right-click any folder in Finder afterwards and Open in Daintree is there.
Terminal > Remove "Open in Daintree" Quick Action takes it back
out. Worth knowing: nothing in ~/Library/Services is touched when you
delete an application, so without this the Quick Action would outlive Daintree.
The NSIS installer registers the folder verbs for you, under your own user
(HKCU) rather than machine-wide, which is what keeps installs and
updates from demanding elevation. Right-click a folder, or right-click empty space
inside one, and choose Open in Daintree.
Daintree claims the inode/directory MIME type in its desktop entry, so
on desktops that honor it (GNOME/Nautilus among them) Daintree appears under Open With for a folder. It is not a bespoke context-menu item, and
file managers that ignore inode/directory won't show it.
Daintree CLI
The daintree command (macOS and Linux only) opens any directory in Daintree straight from your terminal. It works like code . in VS Code. If Daintree is already running, it handles the request internally rather than launching a second instance.
Installing the CLI
Install the CLI from inside Daintree, via Terminal > Install Daintree Command Line Tool in the menu bar.
On macOS, the install creates a symlink at /usr/local/bin/daintree pointing to the bundled CLI script inside the app. That location is on your PATH by default, so the daintree command is available right away in any new terminal session.
If /usr/local/bin isn't writable (rare on a standard setup), the install falls back to ~/.local/bin/daintree, and you may need to add that directory to your PATH yourself.
daintree CLI isn't available on Windows. The menu item is there but disabled. Use the Open in Daintree context-menu verbs instead.On Linux, the install creates a symlink at /usr/local/bin/daintree. If that path isn't writable, it falls back to ~/.local/bin/daintree, creating the directory if it doesn't exist.
~/.local/bin is only added to your PATH when the directory exists at login time. If you get "command not found" after installing, add it to your shell profile and start a new session: echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcAppImage users: Daintree generates a stable wrapper script at ~/.local/share/daintree/daintree-cli.sh rather than symlinking into the AppImage mount, and creates it during CLI installation. If you move the AppImage file elsewhere, re-run Terminal > Install Daintree Command Line Tool to update the wrapper.
.deb package users: The CLI script resolves the Daintree binary from its installed location on its own (/opt/Daintree/daintree or your system PATH).
Usage
Once it's installed, open any directory in Daintree from your terminal:
daintree . # Open the current directory
daintree ~/projects/my-app # Open a specific directory
daintree --status # Check if Daintree is running
daintree --version # Print the CLI version
daintree --help # Show usage information Each flag has a short form: -s, -v, -h. The --status flag exits with code 0 when Daintree is running and 1 when it isn't, which is handy for scripting.
daintree command follows the same folder-opening rules as File > Open Directory…. A folder that isn't a repository lands on the
same two-option dialog: open it as-is, or set git up first.