Skip to content

The secure, command-line interface for the ENC ecosystem. Handles local mounting, encryption management, and secure communication with the ENC Server.

License

Notifications You must be signed in to change notification settings

Pranjalab/enc-cli

ENC Client Documentation

Part of the ENC Ecosystem

πŸ“š Read the Full Documentation PyPI License: MIT Python Platform

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.

πŸš€ Installation

Prerequisites

  • Python 3.8+
  • pip
  • sshfs (Optional, required for mounting projects)

    Note: If mounting fails, please reinstall sshfs manually: brew install --cask macfuse && brew install sshfs or restore from backup.

Installation

The recommended way to install ENC Client is via pip:

pip install enc-cli

After installing, run the setup command to handle dependencies (like sshfs) and environment configuration:

enc install

This will:

  1. Check for sshfs and attempt to install it if missing.
  2. Configure your shell PATH if needed.
  3. Guide you to the next step (enc config init).

To verify installation:

enc --version

βš™οΈ Configuration

Before you can login, you need to tell the CLI where your server is located.

1. Initialize Config

Run the interactive configuration wizard:

enc config init

You 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 show

2. SSH Key Setup

For 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_key

Using Config File: If you set the key path during enc config init, the CLI will automatically use it for all connections.


πŸ” Workflow Guide

1. Login

Start your secure session. This establishes the encrypted tunnel.

enc login

2. Managing Projects

Create 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.

3. Editing Code (Mounting)

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 prompted

Once mounted:

  • Open ./my-work-folder in VS Code, Vim, or any editor.
  • Files you see are plaintext.
  • Files written to disk are instantly encrypted and saved on the server.

4. Logout

When you are done, logout to secure your session.

enc logout

Safety Feature: This command automatically detects and force-unmounts any active project connections to ensure no plaintext access remains.


πŸ›‘οΈ Client-Side Monitoring Protocols

The ENC Client employs active monitoring to ensure session security and clean resource management.

1. Project Integrity Monitor

  • 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.

2. Session Watchdog

  • 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 Reference

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.

πŸ—‘ Uninstallation

To remove the CLI and its virtual environment:

./uninstall.sh

About

The secure, command-line interface for the ENC ecosystem. Handles local mounting, encryption management, and secure communication with the ENC Server.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •