Get Started Building Your First Op
Now that you've run an Op from Slack, you might want to build your own custom Op. Building Ops is more involved than running Ops, and it requires a richer interface than what is provided by Slack. We call this interface the Ops Command Line Interface—Ops CLI for short.
The Ops CLI runs in either the MacOS or GNU/Linux terminal. The CLI provides comprehensive features that will let you develop, run, debug, publish, and share your Ops. Everything you can do with an Op, you can do from the Ops CLI.
1. Prerequisites
To install the Ops CLI, you will need:
- A MacOS or GNU/Linux operating environment (Windows is not supported)
- NodeJS (which includes NPM)
- Docker for Mac or GNU/Linux
2. Install
Once you've installed NodeJS and Docker (as in the step above), launch your MacOS or Linux terminal and run:
npm install -g '@cto.ai/ops'
Once installed, run:
ops
This should display:
![/blog/content/images/2020/02/Screen-Shot-2020-02-19-at-1.52.56-PM.png](/blog/content/images/2020/02/Screen-Shot-2020-02-19-at-1.52.56-PM.png)
3. Sign In
You can sign in to your Ops account with:
ops account:signin
Once you are signed in, you can now run Ops with the ops run
command followed by the name of the Op you want to run. For example, if you want to run the CTO.ai Official Tour Op, you would run it like this:
ops run @cto.ai/tour
You can find more pre-built Ops to run in the CTO.ai Ops Registry.
4. Create an Op
The quickest way to get started on a new Op is to use our ops init
scaffold to set up a base project. From this skeleton, you can see how an Op is written and then modify the skeleton to fit the Op you want to run. On your MacOS or GNU/Linux terminal, type:
ops init
This will present a few configuration options and then generate a scaffold Op for you.
Here's a NodeJS example scaffold:
$ ops init # generate new Op called 'example1'
$ ls -1a
.
..
.dockerignore
.npmignore
Dockerfile
index.js # your source code would go here
ops.yml
package.json
The core code of the Op goes in the index.js
file. The other files are for detailed configuration (read more about Configuring Ops).
5. Build an Op
The example above is a NodeJS Op with an index.js
file that holds the source code for the Op. When you've made some changes to either the code or configuration files, you need to rebuild your Op before you can run it with the new changes. The build
step is where the different pieces of the Op are packaged into one portable, shareable, containerized Op.
From the folder of your Op, build your Op with the ops build .
command.
The .
indicates that you want to build the Op that is in the current folder:
$ ops build .
This assembles your Op into a shareable, portable package—but this package still only exists on your computer. Later, we will show you how to share the Op—but first —we need to run it.
6. Run an Op
Now that your Op source code and configuration files have been packaged into a portable, shareable Op, you can run your Op (which still only exists locally) using the ops run
command:
ops run .
Again, the .
denotes the current folder— ops run
will run the Op in the current folder, which in this case is example1
. If you want to run a different Op, you can use its fully qualified name. To run the CTO.ai Official Hello World Op, for example, you would use @cto.ai/hello-world
in your call to ops run
.
$ ops run @cto.ai/hello-world
⚙️ Running hello-world...
██████╗ ████████╗ ██████╗ █████╗ ██╗
██╔════╝ ╚══██╔══╝ ██╔═══██╗ ██╔══██╗ ██║
██║ ██║ ██║ ██║ ███████║ ██║
██║ ██║ ██║ ██║ ██╔══██║ ██║
╚██████╗ ██║ ╚██████╔╝ ██╗ ██║ ██║ ██║
╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝
We’re building the world’s best developer experiences.
There are many more Ops available to run in the Ops Registry, and all of them can be run from the Ops Command Line.
7. Publish an Op
Once your Op has been packaged using the ops build
command, you can publish your Op to the CTO.ai Ops Registry so that it can be run from anywhere.
By default, published Ops are only shared with your team—not with the whole world—but if you do want to share your Op with the whole world, set the public
option in the ops.yml
config file to true
. See the Configuring Ops page for details on configuration.
You can create any number of teams to publish to. However, when you registered, we assigned you to your own default team so that you can get started right away.
All Ops work within a team—this means you always have an active team context and all Ops execute in this context. If you want to work on Ops for a different team, you need to switch to that team's context first. More information about the ops team:switch
command can be found on the CLI Commands page.
Determine which team is currently active using ops whoami
:
$ ops whoami
Email: [email protected]
Username: exauser
Team Name: exauser
To publish your Op to this active team, use the ops publish
command:
ops publish .
The .
indicates that you want to publish the Op that exists in the current working directory.
A successful publish will produce output like this:
🚀 Publishing...
> Tag: 0.1.0
> Size: 2833
> Digest: sha256:7b643ff13180d60c95bd4fbd8ce6c000c668745f0f0c7bbcc0304fd759684886
🙌 registry.cto.ai/exauser/98838cb1-7b41-4612-853e-1ee18d58dcf9:0.1.0 has been published!
🖥 Visit your Op page here: <https://registry.cto.ai/registry/exauser/example1>
Now that your Op is published, anyone on your team can run the Op from the CLI or from Slack.
8. Add Teammates
When you add a team member to your CTO.ai team, they can run all of your team's Ops from any environment.
Use ops whoami
to see your currently active team, so you know which team you are inviting people to.
Then, run ops team:invite
. This will prompt you for your teammates' email addresses. Follow the interactive instructions to see how this works:
$ ops team:invite
Invite team members to exauser and start sharing your Ops →
Enter the emails of the team member(s) that you want to invite as a comma-separated list.
🎟 Invite User
You can specify the people you want to invite using a comma-separated list, like so:
[email protected],[email protected],[email protected]
When you've completed your list, press Enter to send the invites.
The users you've invited will receive an email from CTO.ai with a link that will add them to your team. Once they've joined your team, they can immediately run every Op that has been published to your team.
Thanks for learning to Build Ops!
You've covered the basics for:
- scaffolding
- building
- publishing
- running
- and sharing
... using the CTO.ai Ops Platform.
The power of Ops can take some time to wrap your head around, so give yourself a pat on the back for getting this far.
What would you like to learn next?
- Get a sense of the Platform as a whole by reading the Ops Overview
- Read more about Configuring Ops
- Discover the Ops SDK
- Browse the CTO.ai Ops Registry