# Command

Ockam Command is our command line interface to build secure by design applications that can trust all data in motion. It makes it easy to orchestrate end-to-end encryption, mutual authentication, key management, credential management, and authorization policy enforcement – at a massive scale.

No more having to design error-prone ad-hoc ways to distribute sensitive credentials and roots of trust. Ockam's integrated approach takes away this complexity and gives you simple tools for:

#### <mark style="color:orange;">End-to-end data authenticity, integrity, and privacy in any communication topology</mark>

* Create end-to-end encrypted, authenticated secure channels over any transport topology.
* Create secure channels over multi-hop, multi-protocol routes over TCP, UDP, WebSockets, BLE, etc.
* Provision encrypted relays for applications distributed across many edge, cloud and data-center private networks.
* Make any protocol secure by tunneling it through mutually authenticated and encrypted portals.
* Bring end-to-end encryption to enterprise messaging, pub/sub and event streams - Kafka, Kinesis, RabbitMQ, etc.

#### <mark style="color:orange;">Identity-based, policy driven, application layer trust – granular authentication and authorization</mark>

* Generate cryptographically provable unique identities.
* Store private keys in safe vaults - hardware secure enclaves and cloud key management systems.
* Operate scalable credential authorities to issue lightweight, short-lived, revocable, attribute-based credentials.
* Onboard fleets of self-sovereign application identities using secure enrollment protocols.
* Rotate and revoke keys and credentials – at scale, across fleets.
* Define and enforce project-wide attribute-based access control policies. Choose ABAC, RBAC or ACLs.
* Integrate with enterprise identity providers and policy providers for seamless employee access.

<figure><img src="https://380318166-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB6iKP7pf6tEttefAJJtl%2Fuploads%2FHc3UpWWOB5aQ0UTpz9PK%2FScreen%20Shot%202022-10-28%20at%2010.37.03%20AM.png?alt=media&#x26;token=77b3ba4d-5bc8-43cb-9a4b-55b336f7a6d0" alt=""><figcaption><p>Please click the diagram to see a bigger version.</p></figcaption></figure>

## A step by step introduction <a href="#introduction" id="introduction"></a>

Ockam Command provides the above collection of composable building blocks that are accessible through various sub-commands. In a step-by-step guide let's walk through various Ockam sub-commands to understand how you can use them to build end-to-end trustful communication for any application in any communication topology.

### Install Ockam Command <a href="#install" id="install"></a>

If you haven't already, the first step is to install Ockam Command:

{% tabs %}
{% tab title="Homebrew" %}
If you use Homebrew, you can install Ockam using brew.

```sh
# Tap and install Ockam Command
brew install build-trust/ockam/ockam
```

This will download a precompiled binary and add it to your path. If you don't use Homebrew, you can also install on Linux and macOS systems using curl. See instructions for other systems in the next tab.
{% endtab %}

{% tab title="Other Systems " %}
On Linux and macOS, you can download precompiled binaries for your architecture using curl.

```shell
curl --proto '=https' --tlsv1.2 -sSf \
    https://raw.githubusercontent.com/build-trust/ockam/develop/install.sh | bash
```

This will download a precompiled binary and add it to your path. If the above instructions don't work on your machine, please [post a question](https://github.com/build-trust/ockam/discussions), we'd love to help.
{% endtab %}
{% endtabs %}

Check that everything was installed correctly by enrolling with Ockam Orchestrator. This will create a [<mark style="color:blue;">Space</mark>](https://docs.ockam.io/documentation/nodes#space) and [<mark style="color:blue;">Project</mark>](https://docs.ockam.io/documentation/nodes#project) for you in Ockam Orchestrator.

```sh
ockam enroll
```

Next, let's dive in and learn how to use [<mark style="color:blue;">Nodes and Workers</mark>](https://docs.ockam.io/documentation/command/nodes).
