Overview
Site management commands operate on the current working directory. When you runloom link, loom unlink, or loom ssl, the CLI uses your current directory to identify the project.
Site management commands require that you navigate to your project directory before running them.
Linking Projects
loom link
Link the current directory as an Envloom development site. Syntax:The PHP version to use for this site (e.g.,
8.5, 8.4)Must be an installed PHP version. Use loom list php to see available versions.What Happens During Link
When you link a project, Envloom:-
Generates a domain - Creates a
.testdomain based on the directory name- Directory:
my-laravel-app→ Domain:my-laravel-app.test - Special characters are converted to hyphens
- Multiple hyphens are collapsed to one
- Directory:
-
Creates site record - Saves the site to
%LOCALAPPDATA%\Envloom\sites.json- Associates the path with the domain
- Records the selected PHP version
- Captures the current Node.js version
- Enables SSL by default
-
Configures Nginx - Generates a site-specific Nginx configuration
- Creates
/sites/<domain>.conf - Configures FastCGI to use the correct PHP-FPM port
- Sets up SSL certificates (if enabled)
- Determines document root (detects
public/for Laravel)
- Creates
-
Updates hosts file - Adds the domain to your Windows hosts file
- Requires admin elevation (UAC prompt)
- Adds entry:
127.0.0.1 my-laravel-app.test - Maintains a managed Envloom block
-
Reloads Nginx - Applies the new configuration
- Runs
nginx -s reloadif Nginx is running
- Runs
- Refreshes PATH - Updates system PATH with runtime binaries
Domain Name Rules
Envloom automatically generates domains from directory names:| Directory Name | Generated Domain |
|---|---|
my-app | my-app.test |
My Laravel App | my-laravel-app.test |
project_2024 | project-2024.test |
site!!! | site.test |
- Only alphanumeric characters and hyphens are allowed
- Spaces and special characters become hyphens
- Consecutive hyphens are collapsed to one
- All domains end with
.test
Currently, you cannot customize the domain during linking. The domain is always derived from the directory name.
Unlinking Projects
loom unlink
Remove the current directory from Envloom site management. Syntax:What Happens During Unlink
- Removes site record - Deletes the site from
sites.json - Cleans Nginx config - Removes
/sites/<domain>.conf - Updates hosts file - Removes the domain entry from Windows hosts
- Reconciles orphans - Cleans up any orphaned Nginx configs or logs
- Reloads Nginx - Applies the changes
Managing SSL
loom ssl
Enable or disable SSL for the current site. Syntax:on- Enable SSL (HTTPS)off- Disable SSL (HTTP only)
What Happens During SSL Toggle
- Updates site record - Sets
ssl_enabledflag insites.json - Regenerates Nginx config - Rewrites the site’s Nginx configuration
- SSL On: Adds HTTPS server block, generates/uses certificate
- SSL Off: Removes HTTPS, keeps only HTTP block
- Manages certificates - Creates or references SSL certificates
- Uses local CA stored in
/sites/ca/ - Generates site-specific cert in
/sites/certs/<domain>/
- Uses local CA stored in
- Reloads Nginx - Applies the new configuration
SSL is enabled by default when you link a new site. You typically only need
loom ssl off if you want HTTP-only access.SSL Certificates
Envloom uses a local Certificate Authority (CA) for SSL:To avoid browser warnings, you can manually trust the CA certificate:
- Open
<envloom>/sites/ca/ca.crt - Install it to “Trusted Root Certification Authorities”
- Restart your browser
Practical Workflows
Link a New Laravel Project
Switch PHP Version for a Site
The CLI doesn’t have a direct “change site PHP” command, but you can:- Unlink the site
- Re-link with a different PHP version
Alternatively, use the desktop app to change the PHP version without unlinking/relinking. The GUI provides a site-specific PHP selector.
Disable SSL Temporarily
Check Which Sites Are Linked
The CLI doesn’t have aloom sites command. To see all linked sites:
- Open the Envloom desktop app
- Navigate to the “Sites” page
- View all linked sites and their configurations
Site Configuration Details
Document Root Detection
Envloom automatically detects the correct document root:| Framework | Document Root |
|---|---|
| Laravel | /public |
| Symfony | /public |
| WordPress | / (project root) |
| Generic PHP | / (project root) |
- Laravel:
artisanfile present - Symfony:
bin/consolepresent - WordPress:
wp-config.phppresent
FastCGI Port Mapping
Each linked site uses the FastCGI port of its configured PHP version:Site Files and Logs
When you link a site, Envloom creates:Troubleshooting
Error: no current Node version selected
Error: no current Node version selected
You must have an active Node.js version before linking sites.Solution:
Error: site domain already exists
Error: site domain already exists
Another project is using the same domain.Solution:
- Rename your project directory to something unique
- Or unlink the conflicting site first
- Then link your project
UAC prompt appears during link/unlink
UAC prompt appears during link/unlink
Updating the Windows hosts file requires admin privileges.Solution:
- Click “Yes” on the UAC prompt
- This is expected behavior
- The prompt only appears when hosts need updating
Site shows Nginx 404 after linking
Site shows Nginx 404 after linking
The site is linked but Nginx can’t find the files.Solution:
- Check that Nginx is running: use the desktop app
- Verify the project path in
sites.json - Ensure the document root exists (e.g.,
/publicfor Laravel) - Check Nginx error logs in the desktop app
Browser shows SSL certificate warning
Browser shows SSL certificate warning
The local CA certificate is not trusted by your browser.Solution:
- Open the Envloom desktop app
- Go to Settings or Sites page
- Look for “Trust CA” or “Install CA” button
- Click it to install the CA certificate
- Restart your browser
Hosts File Management
Envloom manages a dedicated block in your Windows hosts file:- Only Envloom-managed domains are modified
- Existing entries (like Herd) are preserved
- Orphaned entries are reconciled during sync
- Admin elevation is requested when needed
Next Steps
Runtime Management
Learn how to switch PHP, Node, and MySQL versions
CLI Overview
Back to CLI overview and basic usage