Skip to main content

Secure, Memory-Only Encryption for Code Execution

Project description

ENC Client Documentation

Part of the ENC Ecosystem

📚 Read the Full Documentation

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)

Installer Script

We provide an easy installer script that handles dependencies and proper path setup:

cd enc-cli
./install.sh

This will:

  1. Create a virtual environment.
  2. Install dependencies (rich, click, etc.).
  3. Symlink the enc binary to your local bin path (e.g., ~/.local/bin/enc).

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

enc_cli-0.1.4.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

enc_cli-0.1.4-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file enc_cli-0.1.4.tar.gz.

File metadata

  • Download URL: enc_cli-0.1.4.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for enc_cli-0.1.4.tar.gz
Algorithm Hash digest
SHA256 7e19ad183b35a1c5f7232be12cf74b0f33f3e75688383f709ca777ed8e14be29
MD5 44c62c07203b5dcbbcaad0aafe50aeec
BLAKE2b-256 fc3bdb14b313c828391bbb4df50eab1b2a9d66f2324f292dd80854f40c6c95c2

See more details on using hashes here.

File details

Details for the file enc_cli-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: enc_cli-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 26.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for enc_cli-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f57a9bc5c66312d76e153c85649d139a4636d7d874f97d063ef045530ab53aaf
MD5 b09a413dc6beae5f1699eb9b8f347d63
BLAKE2b-256 693100014cf53d038f5fa892168f4ba5c8d50c57be679ce4d750e74323bfd65a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page