features
Importing a Project
Four ways to import a project into a workspace.
A workspace can hold projects from any combination of sources. Click Add a project in the top right of a workspace to open the import dialog, then pick one of four tabs.
GitHub
If you have a connected GitHub account, you can pick from your list of repositories.
- Select the GitHub account (avatar pill at the top).
- Browse or search the repository list.
- Click Import next to the repo.
Glyph clones the repo on the server, syncs all commits to the database, and indexes the file tree in the search engine. The first sync runs in the background - you can navigate away.
GitLab
Same flow as GitHub but using a connected GitLab account. Both gitlab.com and self-hosted instances are supported.
Git URL
For any other Git host (Bitbucket, Gitea, your own server) or for cloning a public repo without connecting an account:
- Open the Git URL tab.
- Enter the project name, the repository URL (HTTPS or SSH), and optionally a description.
- Set the default branch (defaults to
main). - Click Import.
For private repos via Git URL, embed credentials in the URL or use SSH keys mounted in the backend container.
Local Upload
Use this when you don't have a remote repository - Glyph creates a local Git repo on the server, commits the files you upload, and treats it like any other project.
Two-step flow
Step 1 - Enter a project name and an optional description. Click Next.
Step 2 - Add files using one of two methods.
Drag and drop a folder
Drag your folder from the OS file manager onto the drop zone. Glyph traverses the folder using the browser's File System API - no native security dialog appears, and you can immediately see exactly which files will be uploaded after filtering.
Why drag-and-drop is the only way to pick a folder. Browsers display a native security dialog ("Upload N files to this site?") whenever a <input type="file" webkitdirectory> is used. There is no way to dismiss this dialog or pre-filter files before it appears. Drag-and-drop uses a different API that doesn't trigger it.
Pick individual files
Click Select files to open the standard file picker. No folder structure is preserved - files are uploaded flat at the project root.
Filtered files
Glyph automatically excludes common generated, vendored, and sensitive files:
| Type | Examples |
|---|---|
| Directories | node_modules, .git, dist, build, __pycache__, .venv, .next, .nuxt, out, .turbo, .cache, vendor, target, .idea, .vscode, coverage, Pods |
| Files | .env, .env.*, .DS_Store, Thumbs.db, lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, Pipfile.lock, etc.) |
| Extensions | .pyc, .pyo, .so, .dll, .exe, .bin, .log, .map |
The filter runs client-side before the upload - you'll see the exact filtered list before clicking Import.
Adding more files later
A local project can be extended at any time:
- Open the project page.
- Click Import files in the top right (this button only appears for local projects, not Git-backed ones).
- Drag or pick more files. They are committed as a new commit on top of the existing history.
Background sync
After import, Glyph runs a background sync that:
- Pulls the latest commits (for Git-backed projects)
- Syncs all commit metadata to the database
- Reindexes the file tree and content in Meilisearch
You can manually trigger a sync from the project page using the Sync button.