Command Lines, Flyctl and Fly

We’ve just launched the Fly Global Application Platform, designed to make all your applications fast and global. You can dive into Fly and sign up right now for free simply by installing our new command-line tool, flyctl. With the new Fly Global Application Platform, we’re doing everything command line first.

Why Command Lines?

As we’ve developed Fly, we’ve seen numerous benefits that come from driving the service through the command line. Our newest addition to our command armory is the flyctl command which now, quite literally, covers the entire lifecycle of a Fly application, and beyond. The web interface will continue to play its part, but the command line is king.

What Makes a Command-Line-Controlled Service Compelling?

Integration. A command-line-driven service can be integrated into all modern workflows and toolchains. That’s something that cannot be said of web-driven applications which will always need an API layer to even start down the integration path. Command lines are simple, expressive and direct ways to perform a task.

Delivering an Effective Command Line Tool

Previous command-line technology at Fly was built on Node. Node is great for many things but there’s a lot of runtime to carry around to get it doing the job you want it to do. So we moved to Go for flyctl and it’s all rather splendid because now we can make a self-contained binary that you just need to download and run. One binary for macOS, 32- and 64-bit binaries for Linux and 32- and 64-bit executables for Windows.

Creating flyctl in Go also allowed us to adopt the same command-line engine, Cobra, that popular cloud tooling like Kubernetes, Moby/Docker and Hugo use. That helps make it an already familiar environment for developers to work in with the command/subcommand style of requests and contextual help at all levels of that hierarchy.

Maintaining Focus

Command-line tools let developers work where they are, in the terminal and in their current directory. There’s nothing more distracting than having to change from terminal to browser and back. It breaks the train of thought between different working modes, reaching for the mouse to click, then back to typing.

Web interfaces do have an essential role to play in the platform. Our thinking is that web-browser-based elements of the user experience should be about displaying rich, informative dashboards and other metric displays.

Web-based dashboards and metrics are well suited to run alongside a richly interactive command-line experience.

Command Line Reproducability

If you’ve ever talked someone through repeating an interaction with a GUI, you’ll know how hard it is—no matter how precise the direction or explicit the instruction. On the other hand, instructions for the command line are self-contained and self-explanatory. And those instructions can be scripted and repeated as many times as needed. For support and operations, these attributes are invaluable.

Developers First and Always Open

We’ve put flyctl and the Fly experience together with a developer-first ethos. That means picking the right tools for each part of the task, making things reproducible and documentable, and most of all, making it all enjoyable.

And if there’s something you want to improve or have feedback about, the Flyctl Github repository is open for your input.

Want to learn more about Fly? Head over to our Fly Docs for lots more, including a Hands On so you can get a free account and deploy your first app today.