Skip to main content

Tower CLI and runtime environment for Tower.

Project description

Tower CLI

The Tower CLI is one of the main ways to interact with the Tower environment. You can do basically everything you need inside the Tower CLI, including run your code locally or remotely in the Tower cloud.

Installing the Tower CLI

The main way to install the CLI is using the pip package manager.

$ pip install -U tower

You can also download the CLI directly from one of our releases.

Nix Flake

If you have Nix installed with flakes enabled, you can install the latest version of tower CLI with the following:

Profile

$ nix profile install github:tower/tower-cli#tower

NixOS/nix-darwin

If you are using NixOS/nix-darwin with flakes then you can add the following:

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    tower-cli.url = "github:tower/tower-cli";
  };

  outputs = { self, nixpkgs, tower-cli, ... }@inputs: {
    # with nix-darwin:
    # darwinConfigurations.your-hostname = darwin.lib.darwinSystem {
    nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [{
        environment.systemPackages = [ tower-cli.packages.${system}.tower ];
      }];
    };
  };
}

Devenv

If you're using devenv, you can add tower-cli to your project:

# devenv.yaml
inputs:
  tower-cli:
    url: github:tower/tower-cli
# devenv.nix
{ inputs, pkgs, ... }:
{
  packages = [
    inputs.tower-cli.packages.${pkgs.stdenv.system}.tower
  ];
}

Using the Tower CLI

There are two big components in the Tower CLI reposiory: The CLI itself and the runtime environment for the Tower cloud. We host the runtime in this repository and pull it in to our internal code because we want to ensure that the environments behave exactly the same locally and in our cloud!

Using the CLI

It's pretty straight forward! But here's what it looks like right now.

$ tower
Tower is a compute platform for modern data projects

Usage: tower [OPTIONS] <COMMAND>

Commands:
  login    Create a session with Tower
  apps     Interact with the apps that you own
  secrets  Interact with the secrets in your Tower account
  deploy   Deploy your latest code to Tower
  run      Run your code in Tower or locally
  version  Print the current version of Tower
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help                   Print help

Optional Features

Tower supports several optional features that can be installed as needed:

AI/LLM Support

pip install "tower[ai]"

Provides integration with language models through:

  • tower.llms: Access to language model functionality

Apache Iceberg Support

pip install "tower[iceberg]"

Provides Apache Iceberg table support:

  • tower.create_table: Create Iceberg tables
  • tower.load_table: Load data from Iceberg tables

Install All Optional Features

pip install "tower[all]"

Check Available Features

You can check which features are available in your installation:

import tower
import pprint

# Print information about all features
pprint.pprint(tower.get_available_features())

# Check if a specific feature is enabled
print(tower.is_feature_enabled("ai"))

About the runtime environment

The tower-runtime crate has the Rust library that makes up the runtime environment itself. All the interfaces are defined in the main crate, and the local package contains the invokation logic for invoking tower packages locally.

To learn more about tower packages, see the tower-package crate.

Contributing

We welcome contributions to the Tower CLI and runtime environment! Please see the CONTRIBUTING.md file for more information.

Code of Conduct

All contributions must abide by our code of conduct. Please see CODE_OF_CONDUCT.md for more information.

Development

Here are a few handy tips and common workflows when developing the Tower CLI.

Python SDK development

We use uv for all development. You can spawn a REPL in context using uv very easily. Then you can import tower and you're off to the races!

uv run python

To run tests:

uv sync --locked --all-extras --dev
uv run pytest tests

If you need to get the latest OpenAPI SDK, you can run ./scripts/generate-python-api-client.sh.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tower-0.3.22.tar.gz (186.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

tower-0.3.22-py3-none-win_arm64.whl (4.1 MB view details)

Uploaded Python 3Windows ARM64

tower-0.3.22-py3-none-win_amd64.whl (4.3 MB view details)

Uploaded Python 3Windows x86-64

tower-0.3.22-py3-none-musllinux_1_2_x86_64.whl (4.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.22-py3-none-musllinux_1_2_i686.whl (4.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.22-py3-none-musllinux_1_2_armv7l.whl (4.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.22-py3-none-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

tower-0.3.22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.22-py3-none-macosx_11_0_arm64.whl (4.2 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.22-py3-none-macosx_10_12_x86_64.whl (4.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.22-py3-none-linux_armv6l.whl (4.4 MB view details)

Uploaded Python 3

File details

Details for the file tower-0.3.22.tar.gz.

File metadata

  • Download URL: tower-0.3.22.tar.gz
  • Upload date:
  • Size: 186.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.3

File hashes

Hashes for tower-0.3.22.tar.gz
Algorithm Hash digest
SHA256 af6659a1a21b4dc3f91a35c831bf5783dc08a8e0ad0bb5e6a47e1464d8350ceb
MD5 d1c11cf1b52b87007c534297f55c1cf0
BLAKE2b-256 2a594996bd6f100116c4f214f1f92a2f46c8701a886f47ab1041d45569c7d396

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-win_arm64.whl.

File metadata

  • Download URL: tower-0.3.22-py3-none-win_arm64.whl
  • Upload date:
  • Size: 4.1 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.3

File hashes

Hashes for tower-0.3.22-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 b752732fbe46d3264922cd2998c546e19a217acf98c9cd0ef57d39d718171779
MD5 7172b4631ea5e3515c4a4590984cf7cb
BLAKE2b-256 80f3fc44cb306b67a3a676f7b6191d5fdf948c6b4419d78c012a28faddcd316a

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-win_amd64.whl.

File metadata

  • Download URL: tower-0.3.22-py3-none-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.3

File hashes

Hashes for tower-0.3.22-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2541ce169a4759bd0d3dab0afefffe15546df3419047948dfae01895985cdb0d
MD5 e7f2193c95dfa7dac5e8d8d743f6d02a
BLAKE2b-256 02c465c9f8247ee351d873db2ef2883617e59a12525d476775570e360147c4fe

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b963a1648e3e2bded5cc36b295760840ebe97d93969d9810d01ed345f103560c
MD5 b21411c3f35d3c9f55599137f9796907
BLAKE2b-256 e349bf710492bd1eb90fa67389f509e4554f1cdffbcbcd9f7befb761ebab7099

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 827d8654cb11c7b99f8a8690c567f084b23660acc9a11a7a009ce53ad0822d8a
MD5 e126390f42386a531c40bee3535b7a64
BLAKE2b-256 bd0385e26dda225055e29832105abe58dca1c0bcc24a7a01f9e0fe19d38b44ed

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e990261c9231545ddf4af27991ee0189edd9d3536aa0fb4fda55a4c2df3d3108
MD5 957bc536bf21c9828693626f2d87507b
BLAKE2b-256 76df0e1e63b0bccd56d21b65a3252e1e17a247a555b79458361c0e8691130e9a

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 98ed4d191929af5c51a3548fc29fa312fe5ea3570d916f6ab1e9ba1385424a85
MD5 d66bcc58a5d342dc37cec2502cecb6fa
BLAKE2b-256 60b64df9dda1d81aabb0a1ade531d7b10ad94020de0c9215dab37ecc590d15a0

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 533739d7e4088219028ebf836ef3702075c2103ff80da005c874ce16423fd6fd
MD5 5a633ad3e1fd85697a66b65ad24668af
BLAKE2b-256 b2e68add8475deedb44ddf4b90a2e26bf1550501bddc97293cfb8a56a2a6214b

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c829776624307365cf059fd89667df81ad89ed857b026ab96e108aa940279b34
MD5 3aad4f2a852438b3f10c1e6e2380b0c6
BLAKE2b-256 0e903d9a358e8c393b194aea4e4fd00fed1b1aad580c144678da8f68d2fe0798

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9fcfb36d2a87fe596df9ed2074e9bfa0268b391903386a1648cc8592acadfbe4
MD5 e7745b0eb8ebbab5c0a0377377d885ff
BLAKE2b-256 b238d7a0170c2df80bb4f687486aed760d2e847a7aba6ba955430418e09d60d0

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 76196a4c9d08d68e07fd430b87da03aba51238247527922007a4030deec56bcb
MD5 38c37e012f527883eb36135be420907d
BLAKE2b-256 ab8e78d439de1f185d3a8d53dbb457cc980e1d7a9b2bc380a18475d8a20c929e

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cfc278f7668670b3c33fce7877fd6dfb3578dff1bcde1e47383542be00f03b86
MD5 e08dc65e1df208fecf1e586e7a597461
BLAKE2b-256 6bd173489695dde1192e4248fe66c890a549303bfe9f97878117d6bf4b08157a

See more details on using hashes here.

File details

Details for the file tower-0.3.22-py3-none-linux_armv6l.whl.

File metadata

File hashes

Hashes for tower-0.3.22-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 24cc219b56064720e386d5f1b2bab7a2822ecbecd043878a1b891cd104e860c1
MD5 e9780f252b5dd782d171b91f87d3ccd3
BLAKE2b-256 9736a3400eb479363d555b511093e81aff9086d1cfbd13006e7e9cc3b16236f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page