Part of the ENC Ecosystem
The ENC Client (enc-cli) is your secure gateway to the ENC ecosystem. It allows you to create, manage, and edit encrypted projects from your local machine, seamlessly integrating them with your favorite tools.
- Python 3.8+
pipsshfs(Optional, required for mounting projects)Note: If mounting fails, please reinstall sshfs manually:
brew install --cask macfuse && brew install sshfsor restore from backup.
The recommended way to install ENC Client is via pip:
pip install enc-cliAfter installing, run the setup command to handle dependencies (like sshfs) and environment configuration:
enc installThis will:
- Check for
sshfsand attempt to install it if missing. - Configure your shell
PATHif needed. - Guide you to the next step (
enc config init).
To verify installation:
enc --versionBefore you can login, you need to tell the CLI where your server is located.
Run the interactive configuration wizard:
enc config initYou will be asked for:
- Server URL: The address of your ENC Server (e.g.,
http://myserver.com:2222). - Username: Your assigned username.
- SSH Key Path: Path to your private SSH key (e.g.,
~/.ssh/id_ed25519).
To view your current configuration:
enc showFor a seamless experience, we recommend using an SSH agent or specifying your key in the config.
Using SSH Agent:
ssh-add -K ~/.ssh/my_enc_keyUsing Config File:
If you set the key path during enc config init, the CLI will automatically use it for all connections.
Start your secure session. This establishes the encrypted tunnel.
enc loginCreate a New Project:
enc project init <project-name>
# You will be prompted to set a unique password for this project vault.List Projects:
enc project list
# Shows all your projects and their mount status.Remove a Project:
enc project remove <project-name>
# WARNING: This permanently deletes the encrypted vault from the server.This is the magic of ENC. You can mount a remote encrypted project to a local folder.
mkdir ./my-work-folder
enc project mount <project-name> ./my-work-folder
# Enter project password when promptedOnce mounted:
- Open
./my-work-folderin VS Code, Vim, or any editor. - Files you see are plaintext.
- Files written to disk are instantly encrypted and saved on the server.
When you are done, logout to secure your session.
enc logoutSafety Feature: This command automatically detects and force-unmounts any active project connections to ensure no plaintext access remains.
The ENC Client employs active monitoring to ensure session security and clean resource management.
- Function: Continuously verifies that your local mount points are active and valid.
- Behavior:
- Checks status every 3 seconds.
- If a mount point becomes invalid (e.g., directory deleted, connection dropped), it automatically triggers a forced unmount cleanup to remove stale handles.
- Function: Ties your ENC session to your active terminal window.
- Behavior:
- Runs as a background process monitoring the Parent PID (your shell).
- Auto-Logout: If you close your terminal window or the shell process terminates, the watchdog immediately triggers a full
enc logout. - Signal Handling: Captures termination signals (
SIGINT,SIGTERM,SIGHUP) to ensure sessions close gracefully even during unexpected shutdowns.
| Command | Description |
|---|---|
enc config init |
Setup or update local configuration. |
enc login |
Authenticate with the server. |
enc logout |
Close session and unmount all projects. |
enc user create |
(Admin) Create a new user account. |
enc project init |
Create a new encrypted project vault. |
enc project list |
View available projects. |
enc project mount |
Mount a remote project locally via SSHFS. |
enc project unmount |
Unmount a specific project. |
enc status |
Check current session validity. |
To remove the CLI and its virtual environment:
./uninstall.sh