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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

tower-0.3.26-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.26-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

tower-0.3.26-py3-none-macosx_11_0_arm64.whl (4.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.26.tar.gz
Algorithm Hash digest
SHA256 d0731d4a88bbdc12d2ac174e17b1154c347fa9489a61229eed5c16325482999f
MD5 350e5e63d1b213049877a012fff3a467
BLAKE2b-256 0f05f405cce59897a5e241189ebf42f804ff0a9688ab0c206a4d484fa98c73e1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.26-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.14

File hashes

Hashes for tower-0.3.26-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3a462e29efca3f90933dee84b1ed19a4cad1178d1f155c909e88b15ddfe610ea
MD5 dbe2f4dd5c9ae322d4505792adceb387
BLAKE2b-256 e1744eb92c7498b4a0f9941497a91b95f10a7ae2ac1f91a024c3cd972c154c90

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tower-0.3.26-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.14

File hashes

Hashes for tower-0.3.26-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 b380b1b1c07ce485e0bd96c89cc5a38409fab9ac28584dc02137aa8e7212a9ea
MD5 89cc671ec08121d351423cd1309ffa8a
BLAKE2b-256 8e9c99b3568f3ad206453f7497db1ad5c7fe2c4c6c74da098d2105845443e19e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c0e14250de26229e69c99a46df4ac6d46daef2ead6bbc49463e1e1da33e74b30
MD5 04604d0b8cef5a80cba64acd589f6bda
BLAKE2b-256 6b3d1989214df332cd08e4abcd1b1fd3e050ade20ceb6f180175f2fc2e283cf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 de114a48589b572b6862a5e9742ad3e8eeac69d4c64f0df74fcea6bdb8e8d50d
MD5 28dd63de74feb056d2c86d506a526c2d
BLAKE2b-256 19bbd040369d2082f04d8531a4ce3913e4273e6ef19c871cbb1b372a89a8bfb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 13d0fdd41abbb4879985541649ec2d590f79452c7f1c279f3861d99549681f0b
MD5 52e8c34f6278ad76b80fc6ad8a5a36e7
BLAKE2b-256 c54d7b6ba467363df216e035c907157762c342b1927376003f8eff5f3f23ae6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a7f505f3a0789436bfa4f8820e4d4609361646bc4228a831f944181819d1cf3b
MD5 5645f28da14b984119ea6f3b9b3178ed
BLAKE2b-256 9450693a11d8a2a8c391e66808c4f69e351769db64b88dac788fbd2b7fd13daf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 57651256150af729de423e7095ace1564f5532dfe854a4dd6c26670ae47db692
MD5 fb2b0810c045a17de246b1c28c40dd7c
BLAKE2b-256 c4b36f8a1a707b33040d6e5307481d6072cc559dd51b77950fe11e80b6434361

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 bff1f757af464d000b0d58457f7545050780cec167138a9a2bfef1184e0ebb56
MD5 01975ec1d7c2f6fc7dc44ae5b2852d62
BLAKE2b-256 cd4e749b837cfe10d1b52aa39d997aeb2bc8de8324cd861f8d04e1a9234bffc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 031d21c5b0f36fb45b8492de40a6deae58ff8eec451168eb8c2c198278ae7078
MD5 cff9bb1b804faa4fb4d0f26025289c8b
BLAKE2b-256 8ee0dc0a6f8fd49d830d7605e52c77024819653ccf606efae6cc894f6288a6f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 123bfa13891f1cc2a553556a57982d61f990ca4e68aff86a38d2030b31d8f2dd
MD5 79f98973bdbe4fe73ed92717a4498601
BLAKE2b-256 f8a3035526d35b3dc3bc33550f74458e2934736cc71a67b31f40c79222e67369

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a5a062b81ad48b1fe4d1b32e76f7489bfbdcb7ae8cee63adaef7339c3679451f
MD5 e826b03cee3617618bc41d1148bbe404
BLAKE2b-256 bf2da669ca209d55281f4ab79caa46b81eaa1d477f7566a7ac481584983e253a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.26-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 029409a56d62b2110a7ad4ffccc8b1be4d5f050ac472be0865fe2a40bcee563a
MD5 7252ec018ac73fac598ca2b78e020e9d
BLAKE2b-256 e4320a3c66d8a82fedc2f73a09a41673977e6456c7cc258026538855531e8b96

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