Skip to main content
A hexagonal logo of the viur-cli

viur-cli

Badge showing current PyPI version Badge displaying the license
Command-line interface for ViUR framework project maintenance.

What does it do?

viur-cli allows to control, maintain, develop and deploy a ViUR project from one central location by using the viur command.

Installation

To use viur-cli in your ViUR projects, install the PyPI package viur-cli.

$ pipenv install --dev viur-cli

Shell Autocompletion

viur-cli supports shell autocompletion for bash, zsh, and fish shells. This makes it easier to use the CLI by providing tab-completion for commands and options.

Installing Autocompletion

To install autocompletion for your shell, run:

$ viur setup-autocomplete

This will automatically detect your shell and set up the appropriate completion script. You can also specify a shell explicitly:

$ viur setup-autocomplete --shell=bash  # For bash
$ viur setup-autocomplete --shell=zsh   # For zsh
$ viur setup-autocomplete --shell=fish  # For fish

After installation, restart your shell or source your shell configuration file:

# For bash
$ source ~/.bashrc

# For zsh
$ source ~/.zshrc

Checking Autocompletion Status

To see if autocompletion is installed and get more information:

$ viur autocomplete-info

Uninstalling Autocompletion

To remove the autocompletion setup:

$ viur uninstall-autocomplete

Usage

$ viur -h

will show all the commands that are currently supported by viur-cli

$ viur --version

will show your current viur-cli version

$ viur create myapp

this will create a new project folder, clone the base project and then call viur init to prepare a project.json you can use this to get started quickly with a new viur project from scratch.

$ viur run [profile]

run the appserver and start your app locally. You may specify a target profile.

$ viur check [--dev]

Runs a security check for the python environment and for each npm project registered under builds.

$ viur package {install|update} {vi|scriptor|admin|all}

handles ViUR ecosystem package operations

Commands:

  • install installs a ViUR package (in a specific version)
  • update updates a ViUR package to the newest version

Arguments:

  • profile profile to install to
  • version version to install
$ viur build {app|clean|release} [option]

Builds ViUR Project or specific apps Commands:

  • app Build a specific application
  • clean Clean up Build Artifacts
  • release Build all relevant applications to deploy the project
$ viur cloud deploy {app|index|cloudfunction} {profile} {--ext|--yes|--name}

This Function deploys the Google Cloud application and / or different .yaml files Scripts:

  • app Deploy application to the Google Appengine
    • index Deploy index.yaml to Google Appenginge
    • cloudfunction Deploy Cloudfunction to Google Appengine Commands:
    • profile The project.json profile you want to Work from
$ viur cloud init {service} {profile}

This Function makes the init deployment for a ViUR project. This Function needs to be called so that the development server works locally.

$ viur cloud {enable|disable} backup

Enable/ Disable the Backup buckets you need to Backup a cloud project in the Google Cloud Console

$ viur cloud setup {gcloud|gcroles}

Scripts:

  • gcloud This Function setups your project to work on the gcloud plattform
    • gcroles This function lets you set up Roles for your google appengine Workspace
$ viur cloud get {gcroles}

Scripts:

  • gcroles This function lets you get Roles for your google appengine Workspace in a readable .json Format
$ viur package {update|install} {vi|admin|scriptor|all} [profile] [version]

Performs operations on packages

Scripts:

  • update Updates an installed package
  • install Installs a declared package

Options:

  • vi
  • admin
  • scriptor
  • all
$ viur env

Show information about your current environment.

$ viur project list

Pretty prints your project.json file on the console.

$ viur update {requirements}

with this you can update your project specific requirements.txt file automatically

The project.json

The project.json is your core project configuration file for every viur related operation. It contains the default viur project profile and it can be expanded with several individual project profiles.

Example project.json

{
    /*
      The format Key, Value pair defines the project json format, the viur-cli uses
    */
    "format": "2.0.0",
    /*
      The first level contains of your profiles
      "default" is a profile, which is inherited by "develop" and "live" and can be customized for particular versions
      and/or GAE projects. Therefore, every profile can contain all keys from the "default" profile.*/
    "default": {
        /*
          The builds level declares steps for the `viur build` command.
          It can contain viur components and other components that need to be build before project deployment
        */
        "builds": {
            "admin": {
                "command": "viur install admin",
                "kind": "exec",
                "version": "4.0.8"
            },
            "npm": {
                "command": "build",
                "kind": "npm",
                "source": ""
            }
            /* OPTIONAL arguments, can be set in default or in a specific profile */
            "appyaml": "app_stub.yaml",  // Use a name other than "app.yaml"
            "appyaml_substitition": true,  // Set to true to replace only standard variables in app.yaml
            "appyaml_substitition": {  // Set to an object to replace these in addition to the standard variables in app.yaml
                "$REGION": "europe-west3"
            }
        },
        "gcloud": {
            "functions": { //Declarations for a cloud function
                "testfunction1": {
                    "entry-point": "main",
                    "env-vars-file": "env.yaml",
                    "memory": "512MB",
                    "runtime": "python311",
                    "source": "deploy/cloudfunction/function1",
                    "trigger": "http"
                }
            },
            "max-instances": "1",
            "region": "europe-west3"
        },
        "core": "3.5.1",  // viur-core version of your project
        "distribution_folder": "./deploy", // Deploy folder uploaded to GAE
        "sources_folder": "./sources",
        "version": "live-$(year)-$(month)-$(day)", // Version string; Variables can be used here.
        "application_name": "my-live-app-viur3" // Name of the GAE project *4
    },
    "develop": {
        "application_name": "my-dev-app-viur3",
        "version": "dev-$(user)"
    }
}

Viur scripting interface

There is a new core component that enables us to pull and push python scripts from/to a deployed application and run these in a sandbox or even locally. The GUI version is called scriptor and can be accessed via a webinterface, but viur-cli also has a cli for this:

$ viur script {configure|pull|push|run|setup}

Manage your ViUR Scriptor Scripts via the CLI Commands:

  • configure Manage configuration settings.
  • pull Pull contents from server to working_dir.
  • push Push contents of working_dir to server.
  • run Locally run a script located in the working_dir.
  • setup Setup user session with a given username and...

Packaged tools

In order to use the packaged tools, you can run:

$ viur tool {2to3|pyodide|ssl-fix}

Scripts:

  • 2to3 viur porting script
  • pyodide run the get_pyodide command
  • ssl-fix ssl fix for MacOS

for example the 2to3 script helps porting viur2 project to viur3, it can be used to automatically rename some things that are deprecated in viur3 as well, so you can use it whenever a new core version is released for viur3 projects as well:

$ viur tool 2to3 -d .

will dry-run the script in the current directory and not make any changes, only suggestions. If you want to make the changes, leave out the -d argument and if you are a daring go-getter and like to live dangerously, replace the -d with -x, which will write the suggested changes without making a backup of the changed files.

Development

If you want to hack viur-cli, clone this repository next to the folder of your ViUR project.

$ git clone git@github.com:viur-framework/viur-cli.git
$ ls -1
viur-cli
your-project

Then, add it to your project as an editable dependency using

$ cd your-project
$ pipenv install --dev --editable ../viur-cli

Dependencies

viur-cli depends on

License

Copyright © 2026 by Mausbrand Informationssysteme GmbH.
Mausbrand and ViUR are registered trademarks of Mausbrand Informationssysteme GmbH.

This project is free software under the MIT license.
Please see the LICENSE file for details.

Metadata

Release files for viur-cli 3.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for viur-cli 3.1.0
File Size Uploaded
viur_cli-3.1.0.tar.gz 43.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for viur-cli 3.1.0
File Interpreter ABI Platform
viur_cli-3.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 88.9 kB

Release files / viur_cli-3.1.0.tar.gz

Download URL viur_cli-3.1.0.tar.gz
Size 43.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1b3c334f64789a046306a8667a75886e436e0fa2391259cc2f7176e026dd1582
BLAKE2b-256 checksum
How to use checksums
b6abd99badf5c298b9ef1776b91d95cb33604cfdc0b91a17c953b97a3bf80b41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release files / viur_cli-3.1.0-py3-none-any.whl

Download URL viur_cli-3.1.0-py3-none-any.whl
Size 45.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d35d34eafe9d55ae47d1dd345ed35268facb2f75db7810bc475b1c515db363be
BLAKE2b-256 checksum
How to use checksums
db125d35af2ecc675f7db30fe5ad375b91b0e7560aa565f23b2fe865ca544890
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

3.1.1

2 release files

This release

3.1.0 This release

2 release files

3.0.3

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.3.10

2 release files

2.3.9

2 release files

2.3.8

2 release files

2.3.7

2 release files

2.3.6

2 release files

2.3.5

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.3

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.0.16

2 release files

1.0.15

2 release files

1.0.14

2 release files

1.0.13

2 release files

1.0.11

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.0

2 release files

0.7.8

2 release files

0.7.7

2 release files

0.7.6

2 release files

0.7.5

2 release files

0.7.4

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.19

2 release files

0.6.18

2 release files

0.6.17

2 release files

0.6.16

2 release files

0.6.15

2 release files

0.6.13

2 release files

0.6.12

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6

2 release files

0.5.5

2 release files

0.5.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page