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.

Testing

We use pytest to run tests. Copy pytest.ini.template to pytest.ini and replace the values of environment variables

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.27.tar.gz (211.2 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.27-py3-none-win_arm64.whl (4.3 MB view details)

Uploaded Python 3Windows ARM64

tower-0.3.27-py3-none-win_amd64.whl (4.5 MB view details)

Uploaded Python 3Windows x86-64

tower-0.3.27-py3-none-musllinux_1_2_x86_64.whl (4.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.27-py3-none-musllinux_1_2_i686.whl (5.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.27-py3-none-musllinux_1_2_armv7l.whl (4.6 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.27-py3-none-musllinux_1_2_aarch64.whl (4.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.27-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.27-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

tower-0.3.27-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.27-py3-none-macosx_11_0_arm64.whl (4.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.27-py3-none-macosx_10_12_x86_64.whl (4.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.27-py3-none-linux_armv6l.whl (4.6 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.27.tar.gz
Algorithm Hash digest
SHA256 cfa4a9c468c38ffaadc6d0179dcc24b3fe327d6410d2fbac8f1e4ecd5fddde46
MD5 da4626ea0af55973ac1eec3753c38b61
BLAKE2b-256 29b5b1844da3c074c5df860e4ccdb872f5300b671dd7ab56d5b808b8738a4805

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.27-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 7964e022737c2d2350fcc6f0e2ee1ccbda2edd8d1a283bd9c2295e1c8dd4a384
MD5 39985b0b418df487a8f7bac681dd1fd3
BLAKE2b-256 bfa3a7adbba3ca8d8f212c2033b60fd3803e8acd6d1dd9fc6fd07009d8d804f7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.27-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 245e5a6cea0b2f8687d5ee6b5710ea7d83199ee30a2df59bf39b8b61bea470d2
MD5 0a29e8386835f0e218fb53fbe21a3109
BLAKE2b-256 63d2372ab4ba20cb12526f036b50592b8f710fe0aa64a8dd09716a2b7a0840c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0ffde8c332dda2c4873d56f1205a73a4bb89853a059884aa4dbe7ae402954659
MD5 419ec2cde1dcfb0508797fdfa1f3f4b6
BLAKE2b-256 6e6fccba8f6d44732a7d61b884122a000ed679f814b59d20c0ecf6ddb6bec2dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cc8655a55ee082e58960a121ac9a98d65d31c2bdd46ab121fe17af4dc8b58593
MD5 6e9abb0cbd1c3cc8d4f00e878de3d90e
BLAKE2b-256 25e3773c9e2590583f3f013951fbbcfd4318c8e04770fe5635e821c0b13b5b9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 aadbf4a544c76c8340bdbae9dd750122de85938cbc7db4e3e7df15b880463a81
MD5 8284b5cfff592581e98491c50dfd06fd
BLAKE2b-256 8a8c55e1fdd922967126f2ee59546f8a0e287df748f047a464530e39b7adf956

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 91aee5473f19ba896aaa343e73a07fb26d4d806436393c5ef0f1e5b6a25fc4b8
MD5 4ddac68391f99c84a616c115a282a6d8
BLAKE2b-256 671bb18b4e29197444ff645e61a95ccc2fc702ca7da1c4561c9fac6ff21a1006

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f70ef4cbd93c6b0ee413e2d87c506a34c0bb9712490beb50a2baceb69b77b251
MD5 87114a64a4cc91e0240eb79f4908c148
BLAKE2b-256 cf89222628b8e8a5a7dcb2172cce87478641a577a54371fd8b2a8bbde88941b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 05e6f50bc6b8f7de25d13af9930f200a1cf7bb2a283acacfcd6afa1fcd762542
MD5 fb6b228ca7a870cedaca1b57e66fb7da
BLAKE2b-256 233b8e2eecd68d391a965ed57e5bc4d3b5e3381358718dbc680d15f5f5604187

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a650fe37ca9543e6e3a578ed15936a6d6a30466821b622d1e630957f97de640
MD5 c6bb607e8c6ad1739007fe52237dbdb5
BLAKE2b-256 00bc9a33e1828caad07cfc09f950d7ada4617c938f38693d252a133a66a3faa5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a78e0d99dde1d3875658afe8ee7c8486575c4d24d9797e8307d2fb37b547eef1
MD5 88a6c93e55f680f624e515e3065ff6ee
BLAKE2b-256 a5e17fef0a678b2a048763f2d77b5c9d97232be71d768d4c29c481f99dec4ddf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f4d5d757744f893998b19c70193c3f1f62997fb921d48ac578f632c00766ca7c
MD5 b20a0dc5bcb55b91613179cff5e67ddd
BLAKE2b-256 baf4045f756a86284a8cec10da7a45e3ca81485947bb27151d233b840b62c5a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.27-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 0059d8719c6c5b1d152df5671445872a1e570701015c622fb7f1e2eef6464ef5
MD5 1cb6fb13348fc44e180ea91606ef9a9f
BLAKE2b-256 2f993635b3db367d5bda2d56a51e2fc64cfa0baebca98202fdf6608c3f261ad5

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