sept

Documentation

Explore our documentation to find out how to use Sept.

Basic concepts

Sept allows to create manifests where you can store key/value pairs. Manifests can be created, listed, and deleted. Within a manifest, you can set, get, and delete key/value pairs. If you have a .env you can even bulk import key/value pairs into a manifest. As the manifest ID is mandatory for many sept commands, you can export the SEPT_MANIFEST environment variable so that you don't have to pass it everytime. Make sure to read the section on manifests to see an example, and you can always run sept info to check your configuration.

Manifest

A manifest is a list of key/value pairs—what you usually put in a .env file.

CREATE

When you start using sept you need to create your first manifest:

$ sept create
c809f70c-ba07-4376-9e6a-78ef8ea23e05

Now you can start using that manifest. Jump to SET to see how to store key/value pairs in your manifest, or read on to learn how to list and destroy manifests.

LIST

If you want to retrieve the list of manifests, run the command below:

$ sept list
c809f70c-ba07-4376-9e6a-78ef8ea23e05

DESTROY

If you want to get rid of a manifest, run the command below:

$ sept destroy -m c809f70c-ba07-4376-9e6a-78ef8ea23e05
Manifest ID: c809f70c-ba07-4376-9e6a-78ef8ea23e05 destroyed

Note how you pass the manifest ID with the -m flag. It's a required flag for most commands, and specially for keyspace operations.

Keyspace

Keyspace operations allow you to set, get, and delete key/value pairs—both individually and in bulk— from a given manifest. All the keyspace commands require the manifest ID flag, for example:

$ sept -m c809f70c-ba07-4376-9e6a-78ef8ea23e05 set APP_NAME foobar
# OK

For brevity, we assume the SEPT_MANIFEST environment variable is exported:

$ export SEPT_MANIFEST=c809f70c-ba07-4376-9e6a-78ef8ea23e05

Then all the commands that require the -m flag can just use the value configured for SEPT_MANIFEST.

SET

Usage: sept set KEY VALUE [KEY VALUE ...]

$ sept set APP_NAME foobar
# OK

GET

Usage: sept get KEY [KEY ...]

$ sept get APP_NAME
APP_NAME=foobar

DEL

Usage: sept del KEY [KEY ...]

$ sept del APP_NAME
# OK

GETALL

Usage: sept getall

Assume there are three key/value pairs set: FOO=1, BAR=2, and BAZ=3. Then:

$ sept getall
FOO=1
BAR=2
BAZ=3

You can use getall to export the key/value pairs from a manifest into a .env file.

$ sept getall > .env

IMPORT

Usage: sept import .env

Assume there are three key/value pairs defined in the .env file: FOO=1, BAR=2, and BAZ=3.

$ sept import .env

Then:

$ sept getall
FOO=1
BAR=2
BAZ=3

RUN

Usage: sept run -- COMMAND [OPTION ...]

Technically this is not a keyspace operation, but it is a way of exporting all the key/value pairs in manifest as environment variables and running a process within that environment.

$ sept run -- ./my/process

Admin

INIT

Usage: sept init

Perhaps the first command you will run, init creates a configuration file and generates the public and private keys that will be used for encrypting and decrypting the secrets you store in sept.

By default the configuration is stored in ~/.config/sept/config.ini, but you can pass -c path/to/file.ini if you want to store the settings somewhere else. As with the manifest ID, you can export the environment variable SEPT_CONFIG with a path to a config.ini file.

$ sept init
Keypair created.
Public key: pk_0A6WFJWPc9mq2rWBxHodJT-hGEsq1uPhduK-BSuXKQIT5QUZ

REGISTER

Usage: sept register URL TOKEN

Likely the second command you will ever run, register will connect to your account and exchange public keys with the server. The configuration file will be updated and you will be able to securely store your secrets in sept.

$ sept register https://some-domain.1.sept.run \
    tk_some_token

Note that the URL and the TOKEN will be provided to you when you subscribe to the service.

LOGIN

Usage: sept login URL

When you are added as a supervisor, or when you are granted editor or viewer access to a manifest, you will have to run this command to identify yourself with the server. This command will fail if you haven't run sept init first.

$ sept login https://some-domain.1.sept.run
Successfully logged in.

Note that the URL will be provided to you by whomever added you by an account supervisor.

INFO

Usage: sept info

$ sept info
Public key: pk_0A6WFJWPc9mq2rWBxHodJT-hGEsq1uPhduK-BSuXKQIT5QUZ
Remote URL: http://some-domain.sept.run
Remote key: pk_ohEHNPFyNcwTu9WP1P3l5TFHnrxMtcs72QBqHohXQq3XxpY1

If you have exported the variables SEPT_MANIFEST and/or SEPT_CONFIG, their values will show up in the reply to info.

For example:

$ export SEPT_MANIFEST=c809f70c-ba07-4376-9e6a-78ef8ea23e05

Then:

$ sept info
Public key: pk_0A6WFJWPc9mq2rWBxHodJT-hGEsq1uPhduK-BSuXKQIT5QUZ
Remote URL: http://some-domain.sept.run
Remote key: pk_ohEHNPFyNcwTu9WP1P3l5TFHnrxMtcs72QBqHohXQq3XxpY1

SEPT_MANIFEST=c809f70c-ba07-4376-9e6a-78ef8ea23e05

Permissions

GRANT

Usage: sept grant ROLE AGENT

ROLE can be either owner, editor or viewer; AGENT is the public key of a sept user. For any user that has sept installed, running sept info will yield their public key.

When ROLE is set to owner, the agent will be granted admin access to the account. They will then be able to create, list and delete manifests, as well as running any admin command. This access level is not limited to a particular manifest.

When ROLE is set to editor, passing a manifest ID is mandatory. The agent will have read/write access to that manifest.

When ROLE is set to viewer, passing a manifest ID is mandatory. The agent will have read-only access to that manifest.

$ sept grant owner pk_0A6WFJW...
Added 'pk_0A6WFJW...' to supervisors.
$ sept -m c809f70c-ba07-4376-9e6a-78ef8ea23e05 grant editor pk_0A6WFJW...
Granted 'pk_0A6WFJW...' editor access to 'c809f70c-ba07-4376-9e6a-78ef8ea23e05'.

REVOKE

Usage: sept revoke ROLE AGENT

ROLE can be either owner, editor or viewer; AGENT is the public key of a sept user. For any user that has sept installed, running sept info will yield their public key.

When ROLE is set to owner, the agent will be removed from the list of supervisors.

When ROLE is set to editor or viewer, passing a manifest ID is mandatory. The agent will no longer have access to that manifest.

$ sept revoke owner pk_0A6WFJWPc9mq2rWBxHodJT-hGEsq1uPhduK-BSuXKQIT5QUZ
Removed 'pk_0A6WFJW...' from supervisors.
$ sept -m c809f70c-ba07-4376-9e6a-78ef8ea23e05 revoke editor pk_0A6WFJW...
Revoked 'pk_0A6WFJW...' access to 'c809f70c-ba07-4376-9e6a-78ef8ea23e05'.

AGENTS

Usage: sept agents

List the agents with access to a given manifest. The output is a list of public keys.

$ sept -m c809f70c-ba07-4376-9e6a-78ef8ea23e05 agents
pk_0A6WFJWPc9mq2rWBxHodJT-hGEsq1uPhduK-BSuXKQIT5QUZ
pk_ehBOFIUOyA3G2oUOx3Rdf6nlfIi9FUi55NjqpFOk_xd0USQi
pk_gw9TASC0wHCNvAq3kshEl1UI1wsblH7VsJoe0JaUlDEunOAt