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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

tower-0.3.20-py3-none-musllinux_1_2_x86_64.whl (5.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.20-py3-none-musllinux_1_2_i686.whl (5.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.20-py3-none-musllinux_1_2_armv7l.whl (5.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

tower-0.3.20-py3-none-musllinux_1_2_aarch64.whl (5.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (5.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

tower-0.3.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.20-py3-none-macosx_11_0_arm64.whl (4.8 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.20-py3-none-macosx_10_12_x86_64.whl (5.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

tower-0.3.20-py3-none-linux_armv6l.whl (5.2 MB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.20.tar.gz
Algorithm Hash digest
SHA256 76bdca52d197d8b49dc9e48bc8d24e3c314bf75dc941c531c526a05f1d1ec0e6
MD5 c506098dd98dc2de916165fd95a55ec5
BLAKE2b-256 6648c9ea2153680f929b9d11ce57d5083985346cb2c1ec3a6bcf0349b7530618

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.20-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.7.21

File hashes

Hashes for tower-0.3.20-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 79dedb53f3eb9268a15672345c98ef6fb8122baa9339fa1cfce7d663702c207d
MD5 4843b9f0eb9bbae0bf8dd92e43475972
BLAKE2b-256 eb3cc06956bf6f75ac3f488b180d377c0447934c257523c8c1e9be982c5c7f72

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.20-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.7.21

File hashes

Hashes for tower-0.3.20-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b1272824be5ea33c42451e9bbab3186f7c9feb5c23e7f4a899c5c13d337f866c
MD5 46442b5480f8a600212023960a80a46d
BLAKE2b-256 a6e00e57756620b33fb0ff020ea7a9a4c803486a2332d95bb949cbed0acbf83f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d2c67b2328c7157bb52824f167c341d769dc5c82961cba79f45062c2059d5b85
MD5 fe2cf4e1eccb85a4907d829d4b45a232
BLAKE2b-256 7f6f4a4543487f41c5d84e39f4455966c89cf9c925c090097cb5bb6089ecb4f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 17f3333adf422e0f6d9b3ac65a8bdb3bbcdd06a6a1dbe91468683d8d4bb07f58
MD5 0e7b36c354eb96b33304b8a2093e6c6d
BLAKE2b-256 e7bb9208b536766af22a42efa2065ddec7893de22c5c86978ab582d3d9ec3bdf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3b6d5b9b99ca24544926a130d45db18831266e49c620839bbfc20da29e0e5e29
MD5 2223dddfe1ae87a69af49ed2506cbd38
BLAKE2b-256 d634617984385ac6dc189a89abb3c491d82a7ae972f6a5af970031df583f0133

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6e7f6fc2ed921cf3f55b697903a45d5e3928d0e3c08a06b5fd0d420150c4c41b
MD5 b1cd8debc102b24f96cde7fe358c4a59
BLAKE2b-256 4c41e848392d0ad1635103a1a1627cf4095283448ef31c35e588fa343e47b2bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05d5b164ca25e8c8cfa86081a58566c1aa46313ce99621b85d5142a20475d708
MD5 6b25eba7cdb1b9237489a06f94cf7ffa
BLAKE2b-256 38c28832c5d614d2ee31a796c11ff28e0590167eeb426b7f8206fa39eab29382

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 5bd9d4aea37400e8736813a822ee0d2441b0e1a67e05dbb7edae92184c65a5ad
MD5 9e86d7909bbe72fbbec13b8a4874a55d
BLAKE2b-256 40d15fed2915c7f97d0f6dbb0039392e197824d1058187b225c8fce60f115a82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca7a68bfce77ce6c45be3082a2fc071575cc629add430710658dcd8188166eed
MD5 192a3eecc72d76322a46e394a92d8ce4
BLAKE2b-256 8d360f3d12047273d619091ce927257c9fdd12d17db8ba859f456f6b830212da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e274c9164eff2f721a340d05d724610a25b889ee84b001a470e9006d6a45f12d
MD5 94a24aed1499c4c3e1fa3fb389dab7cb
BLAKE2b-256 5159ca1c34811d04c8a6618db13e29da50a7306852d56cb68438c995e69606f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 62e031f4a321a872346af5b9774322fd3a6b49fc366db9b40b7ba4b4ada9dc93
MD5 f198701add61a9e343bb6688df1d2a19
BLAKE2b-256 402aebaad319adb11b075b1b78422cee58ab5435ea6e38ecf26198b414f17f5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.20-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 2b186637609784237729fea67bc833c6d6fd0399ad5d94ebce37f90578e49d7a
MD5 21853735102e959031f48179efe9da8d
BLAKE2b-256 0ff9fb3fc24c90d0222b441e6718314f33a77677ca4ceff28154cf76d07d31dc

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