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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

tower-0.3.24-py3-none-musllinux_1_2_i686.whl (5.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

tower-0.3.24-py3-none-musllinux_1_2_armv7l.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

tower-0.3.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

tower-0.3.24-py3-none-macosx_10_12_x86_64.whl (4.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.24.tar.gz
Algorithm Hash digest
SHA256 d487b4c0d84b6e435ed67fc1499428f8c0499f2f865a06ffde11eb2c83957266
MD5 cd68baf8a8a9a5050f7155c3c5e4837e
BLAKE2b-256 e1fdf211cac878076deed6e2a84d1f5fd362c07fb5139b8815157a1deb3030a4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.24-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.4

File hashes

Hashes for tower-0.3.24-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 713a7336054ab979039f4250e48758608ce9f9bc792895549869417d29ae821a
MD5 65853d3ab321641fc7ab5d5773820f16
BLAKE2b-256 aa46083fd17113ea15d59b8026203f361e942cec13db92dc2e20a057bbd37d63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.24-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.4

File hashes

Hashes for tower-0.3.24-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 960d2d2ce6b526876969f518ab472e7b6610beb6b5dd1ab1a5fcbfcfeb27152c
MD5 35dbd0d1fbc848a8101caea6751fc9bf
BLAKE2b-256 668c32c62e048cafeed375e32245db83be955bf0e442be95e662f6ed4f43690e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 00fd9b59f06cbd19b8e242e16bf980d250a76ee5524bf5ffd7b7c58d89f402f1
MD5 c6bfe80cf1b200e4e0f0e9aa5d70ab96
BLAKE2b-256 a33b9bf32ae7a09e0b9edd430882c0288701225ccb95b94b1e589a18369e60ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 67434e0a21a4a29a619c5da8724a8b5373832de49e5a8f7efe0322191def4da5
MD5 1318cc3ece8b02e61f545b0641e2fb37
BLAKE2b-256 48c31a9623869d861b4c89efd50f5d4b27e0a059dcbbc185ca433c53c022a7e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 24b1290320484a44c63d0852f4950daa23f9a7c2668dfa36c6d2e42fdcb0372f
MD5 a885373d282e0acfc5b344ad7ec362cd
BLAKE2b-256 b5de33634dd722932c3b2b2356d37796406bbcaabad961ad123ba32f6fadf450

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4abb51c501ed8de7ab87039f75abb6785797dd422ecc71303e092d904a9657cc
MD5 a2026081f7e0af1cc064e37b8451610c
BLAKE2b-256 372905b72cf8026b9f6a4069b42e16db028b09b0cf4bac75b67fb99663b8f421

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c36f14beb543ea9542cc8ae7fb2e204c4be864a54195ee6224863db8646e573
MD5 872e02a7db10c57a583ff6c0e054c136
BLAKE2b-256 b45cb186bebeef17eba125ea5a40f161f0eefdd3c2a126c7648692d1122e9fb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fc1babade62c57ecaef7516adaa28269f8574c56827e66c317881147a9be4265
MD5 a821d3610a55984384c5ae86c31f67c7
BLAKE2b-256 7ad0ca34e6ac7703e12fc1dc3078736086348f7cc0c47d682e30510e83d3d316

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 63bf117ee80913bcddd967535c89cc17798e2c44e1302f16546014279b1712f0
MD5 e1ac84e150181e6d4387c07609908449
BLAKE2b-256 85bebeba90158c88eaf92c325afb8db4bec7d9589b316f2c7ccef3b9ed192c6d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 387d6ebc8b1bd7e8d9050693d1a4fd17447d591cda99780e8fb030a76faca589
MD5 34fe9bf260b422ae3ea0d25248be25d3
BLAKE2b-256 e9e709b2b1ed12af3a3497f05b4450ba22e29f6272ed5606903b92b780a6c8a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8270f536f408c66fab8e21657ccb4d860da003d90ed26ab4f6c40d9b12ef9eed
MD5 93592d75d07dd6414cb450e12cc140a1
BLAKE2b-256 ee9705ee8de3afa2b930cada8cce9efb12a99309443f76612ce8651a8b58f538

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.24-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 39b321c51f411e1f5134e854ef34c5af827855479a873cebd48f784283a6bc0a
MD5 93d22acb0cbe706ebef4949c8e459557
BLAKE2b-256 8162f0752173803f9a9fa8a7aade48518d8c057e4bd017b03e50b9d95f8bd529

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