@e2e-tech/cli
Project overview
Secure content management with end-to-end encryption.
Important information for users
This is an early-stage project and as such only provides low-level functionality and APIs at present. Please note the APIs might change before reaching v1.0.
Basic usage
First, create an account. This will also generate a set of ECC encryption keys associated with your account.
Alice$ e2e create-account --email "alice@example.com" --name "Alice's personal 👩💻" --passphrase "numbingrelatableliquefy"
A verification email will be sent to the provided email address. Once you've verified your email, you can start using e2e to manage content securely.
Alice$ e2e create --from-file "credentials.csv" --passphrase "numbingrelatableliquefy"
{"MessageId":"BhY0TShLng","MessageStatus":"Creating"}
You can then read your message.
Alice$ e2e read BhY0TShLng --passphrase "numbingrelatableliquefy"
To list all messages for your account, use the following command.
Alice$ e2e messages
You can share messages with other accounts.
Alice$ e2e share BhY0TShLng --email "bob@example.com" --name "🕵️♂️" --passphrase "numbingrelatableliquefy"
{"MessageGrantId":"JjqKaUpwS0"}
The nominated account will receive an email notification that read access has been granted to your message.
They will be able to read your message using the --grant
option.
Bob$ e2e read BhY0TShLng --grant
Users can view all their grants using the following command.
Bob$ e2e grants
FAQs
Why are there account limits in place?
Compute and storage cost money, therefore the most sensible thing to do at the moment is to make sure these costs can be covered when usage exceeds certain parameters.
Currently, users are able to create 10 messages per month and share each message with 1 additional user for free.
Additionally, we offer 2 paid tiers for users who wish to upgrade:
1. Personal tier
- 30 messages per month
- 3 grants per message
- Ability to delete messages
Cost: ~ 1 ☕️ per month (please contact support@e2e.sh to subscribe)
2. Team tier
- 100 messages per month
- 5 grants per message
- Ability to delete messages
- Ability to set auto-expiry on messages
Cost: ~ 3 ☕️ per month (please contact support@e2e.sh to subscribe)
Please note that there are additional restrictions (rate-limiting and daily request quotas) in place for each user and upgrading to a paid tier does not remove or update them.
Why do I need to provide my email?
Your email address is used for account-related transactional email only.
We currently use email to verify customers' accounts, and to notify customers of account-related activity such as obtaining access rights to a message.
The only 3rd party we share your email address with is Stripe, however this only applies in the case that you decide to upgrade your account to a paid tier.
Why are my requests sometimes taking longer than expected?
There may be 2 reasons for this:
- Currently the API is only deployed in eu-west-2 (London) therefore some users will likely experience longer than usual response times; and
- The platform is mostly serverless therefore some users might occasionally experience cold starts resulting in longer than usual response times (e.g. ~1 second).
Roadmap to v1.0
Currently, there is an in-progress quick-and-dirty GitHub project to help track progress against a stable v1.0 release.
See https://github.com/e2e-tech/cli/projects/1 for more details.
Usage
$ npm install -g @e2e-tech/cli
$ e2e COMMAND
running command...
$ e2e (-v|--version|version)
@e2e-tech/cli/0.0.11 linux-x64 node-v12.22.1
$ e2e --help [COMMAND]
USAGE
$ e2e COMMAND
...
Commands
e2e create
create end-to-end encrypted message
USAGE
$ e2e create
OPTIONS
-c, --curve=curve25519|ed25519|p256|p384|p521|brainpoolP256r1|brainpoolP384r1|brainpoolP512r1|secp256k1
[default: curve25519] ecc curve name used to generate message keypair
-f, --from-file=from-file
path to file
-n, --name=name
message display name
-p, --passphrase=passphrase
passphrase associated with the account key ring
--profile=profile
[default: default] account profile to use
EXAMPLES
$ e2e create --from-file keys.csv
$ e2e create --from-file keys.csv --curve p521 --passphrase StrongestPasswordEver
$ e2e create --from-file keys.csv --profile personal
See code: src/commands/create.js
e2e create-account
create an account
USAGE
$ e2e create-account
OPTIONS
-c, --curve=curve25519|ed25519|p256|p384|p521|brainpoolP256r1|brainpoolP384r1|brainpoolP512r1|secp256k1
[default: curve25519] ecc curve name used to generate account keypair
-e, --email=email
(required) email associated with the account
-n, --name=name
[default: fv-az173-665] name associated with the account
-p, --passphrase=passphrase
passphrase associated with the account key ring
--profile=profile
[default: default] namespace to associate this account configuration with
EXAMPLES
$ e2e create-account -e bob@example.com
$ e2e create-account -e bob@example.com -n Bob --passphrase StrongestPasswordEver
$ e2e create-account -e bob@example.com -c brainpoolP256r1 --profile personal
See code: src/commands/create-account.js
e2e grants
list message grants for account
USAGE
$ e2e grants
OPTIONS
-x, --extended show extra columns
--columns=columns only show provided columns (comma-separated)
--csv output is csv format [alias: --output=csv]
--filter=filter filter property by partial string matching, ex: name=foo
--no-header hide table header from output
--no-truncate do not truncate output to fit screen
--output=csv|json|yaml output in a more machine friendly format
--profile=profile (required) [default: default] account profile to use
--sort=sort property to sort by (prepend '-' for descending)
See code: src/commands/grants.js
e2e help [COMMAND]
display help for e2e
USAGE
$ e2e help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
e2e messages
list messages for account
USAGE
$ e2e messages
OPTIONS
-x, --extended show extra columns
--columns=columns only show provided columns (comma-separated)
--csv output is csv format [alias: --output=csv]
--filter=filter filter property by partial string matching, ex: name=foo
--no-header hide table header from output
--no-truncate do not truncate output to fit screen
--output=csv|json|yaml output in a more machine friendly format
--profile=profile (required) [default: default] account profile to use
--sort=sort property to sort by (prepend '-' for descending)
See code: src/commands/messages.js
e2e read ID
fetch and decrypt end-to-end encrypted message
USAGE
$ e2e read ID
ARGUMENTS
ID unique message id
OPTIONS
-g, --grant resolve message using an account grant
-p, --passphrase=passphrase passphrase associated with account keychain, if any
--profile=profile [default: default] account profile to use
EXAMPLES
$ e2e read qOWlubPK5p
$ e2e read qOWlubPK5p -p StrongestPasswordEver
$ e2e read qOWlubPK5p -a iNR3Rm1GYJ
See code: src/commands/read.js
e2e share ID
share an end-to-end encrypted message with another account
USAGE
$ e2e share ID
ARGUMENTS
ID unique message id
OPTIONS
-e, --email=email (required) account email to share message with
-n, --name=name message grant display name
-p, --passphrase=passphrase passphrase associated with account keychain, if any
--profile=profile [default: default] account profile to use
See code: src/commands/share.js