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.22rc1.tar.gz (186.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.22rc1-py3-none-win_arm64.whl (4.1 MB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

Uploaded Python 3macOS 10.12+ x86-64

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tower-0.3.22rc1.tar.gz
Algorithm Hash digest
SHA256 776617b7df1389e8d4ef51a60312faeb8fe683972ff7ae8895dce5ae09560768
MD5 6810a2bdae353ad90d17c57f0e07aa3e
BLAKE2b-256 a133c4069f70df5738960634154d038cf66aaa56b40581f5eb3a408f8bf67ac2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 98c14446798b2cb6539acd4deca11deb5f4d9e89d0a4f37d562bc98e9cc3e434
MD5 108d30086aaf1b5ba3b9fc04ab3b9699
BLAKE2b-256 a6441c77c97870d4dbc78e4a8d2abcf8fdde3858fa2b24a85dcdaef7cd56f6ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 010ce3afa923265854a5fe1c678f0e8b3bb1f2bfa3fa3c1075f7f529f283364d
MD5 42c3953c171a860f33e80b566e9ab72b
BLAKE2b-256 fc98e4bca3317b96f46c6714b712ca4e5af0940adb073c4c2105445e8a8bc6f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 21868ca9708f27b8d60356d9b7448a4393cdb11d13f7b4799d37793b315d0979
MD5 f9adcfda07d1adc4d881a7b3b3e60036
BLAKE2b-256 4616a80bae27f4455383d65699ef724a0086fcad2f8ccace4d8b4adc18feabd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 34ec334a9bd3efa594fe0f5207c39a5e4e72442dcffd04beae8d0823b19b33dd
MD5 b81e3f258aabb26df2e19a86355029b6
BLAKE2b-256 ca41ac8b3c3517a2076f764f2f565131ca97ff5c501e1a0fa1dea5d1f87fd802

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 68b865621c02fb19bf33e7a36a2c57b771d254f8d0f2b137de277dd57cc56dd5
MD5 737a4114d01df436879462745e8ed9ad
BLAKE2b-256 a5010ca11b59d8f8f049c75ef63d5a4f96965661a2c54fe57d8cc65d2273b10e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 936582491c1b91fb74b449c686a7b8b5d9fa6415ba5be5b8da240647072c104e
MD5 d7dd6e3620022debd3f91cf1b5810e75
BLAKE2b-256 7b6907243f05949f2ec3ca86769862168b0540cda3da25491fdea34c56c961da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b733663fb03cd947ef4e9e45e763d0c5321d12e859e21141c5f554b81182387b
MD5 d3d07137263fac91fc797383ac52f0da
BLAKE2b-256 4d8ab0b0b7e7c1155dafec894cc8a466fadf83cff3d825e4597608d36ebe7693

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 fb705ee152ef55e3d7c0fa84a58d105924e3534b975e347927a23c4e0c8bda5f
MD5 9788ccfee6b4dadaa829865d0bab133e
BLAKE2b-256 b77b87c112a139ea006d694d755cd46dd36c2c43d742aca6513862a732e671dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6f8092f732d04ec3c04887c7be49ea15aec31a7856aff5263221e5a4d4b1bd1f
MD5 a813f8f2b831db136de9a5bdd9de62c3
BLAKE2b-256 ad28e9b2782a13075cb36e837cce720c7a7560a80000f43e5a3c8de40b698ac0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 911240dbbd49bb75ab953b43c2dbabe254c0ef56849487c5fa6914439a1b5101
MD5 2b4c7395e66ca3de8c54b4ed9798f24d
BLAKE2b-256 05ee95b74d151925649762776767e3641cf2f3d371f95d53f02fb4be5c9b7a84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b272b8a3935f45bb14c411f2aec2941557794d2645292e70bf7d5fcedbdd8282
MD5 a45008ad50c5ae49ede4b3d791d7b07d
BLAKE2b-256 ac63474425ad8793fb28f6a5abfca6f01b7455b644b1ea21d033552054cee4f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for tower-0.3.22rc1-py3-none-linux_armv6l.whl
Algorithm Hash digest
SHA256 1d5f936957cbf8acb3a3cc7d1410fa7361339d558019d4c77b0de73d836e44e6
MD5 a997241c19471f42612798011b2004f0
BLAKE2b-256 cfd145de842cf4fc092ff3c3bc317ff67e6d15be820a1f9acebd04ead22417b6

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