# \#cli

**URL:** https://discourse.julialang.org/tag/cli/738.md

[Latest](https://discourse.julialang.org/latest.md) · [Categories](https://discourse.julialang.org/categories.md) · [Tags](https://discourse.julialang.org/tags.md)

---

## [\[ANN\] DistSSHKit.jl: run a Julia project on multiple machines over SSH](https://discourse.julialang.org/t/ann-distsshkit-jl-run-a-julia-project-on-multiple-machines-over-ssh/138960)

<div class="topic-metadata">

**Author:** [@yamanori99](https://discourse.julialang.org/u/yamanori99)\
**Replies:** 1\
**Last updated:** [August 25, 2026, 7:27am UTC](https://discourse.julialang.org/t/ann-distsshkit-jl-run-a-julia-project-on-multiple-machines-over-ssh/138960 "2026-08-25T07:27:48Z")

</div>

Hi everyone, I’d like to announce DistSSHKit.jl, recently added to the General registry. pkg\> add DistSSHKit DistSSHKit runs the same Julia project locally and over SSH, then collects the results. Uses Distributed.jl …

---

## [\[ANN\] Unified Julia-Python Project Management](https://discourse.julialang.org/t/ann-unified-julia-python-project-management/138676)

<div class="topic-metadata">

**Author:** [@alt-f4-dev](https://discourse.julialang.org/u/alt-f4-dev)\
**Replies:** 2\
**Last updated:** [August 10, 2026, 2:36pm UTC](https://discourse.julialang.org/t/ann-unified-julia-python-project-management/138676 "2026-08-10T14:36:26Z")

</div>

\[ANN\] Unified Julia–Python project management ( jupy-cli ) I’ve been working on jupy-cli, which is a small cross-platform CLI for hybrid Julia–Python projects. The main idea is to treat the project environments Project.…

---

## [\[ANN\] OptParse.jl – a composable, type-stable CLI parser](https://discourse.julialang.org/t/ann-optparse-jl-a-composable-type-stable-cli-parser/136580)

<div class="topic-metadata">

**Author:** [@cshen](https://discourse.julialang.org/u/cshen)\
**Replies:** 15\
**Last updated:** [June 28, 2026, 10:48pm UTC](https://discourse.julialang.org/t/ann-optparse-jl-a-composable-type-stable-cli-parser/136580 "2026-06-28T22:48:10Z")

</div>

\[ANN\] OptParse.jl – a composable, type-stable CLI parser Hi all, I’ve been working on OptParse.jl, a command-line argument parser for Julia built around three main ideas: type stability: the main goal was to make a CL…

---

## [Julia alternative for project.scripts (and Typer)](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129)

<div class="topic-metadata">

**Author:** [@lilachint](https://discourse.julialang.org/u/lilachint)\
**Replies:** 2\
**Last updated:** [May 15, 2026, 2:26pm UTC](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129 "2026-05-15T14:26:59Z")

</div>

I used to use Python to build CLI applications, and using pip I could conveniently define \[project.scripts\] in pyproject.toml, e.g. \[project.scripts\] gradupe = "gradupe.cli:app" Along with using Typer. I could call gra…

---

## [Command line performance: pkg app, precompilation and juliac](https://discourse.julialang.org/t/command-line-performance-pkg-app-precompilation-and-juliac/136233)

<div class="topic-metadata">

**Author:** [@FerreolS](https://discourse.julialang.org/u/FerreolS)\
**Replies:** 4\
**Last updated:** [March 18, 2026, 7:30am UTC](https://discourse.julialang.org/t/command-line-performance-pkg-app-precompilation-and-juliac/136233 "2026-03-18T07:30:14Z")

</div>

Hi, I just want to share my experience building a command-line tool in Julia. A few years ago, I developed a small (unregistered) package, FITSexplore, to manipulate FITS files and their headers/keywords. Recently, I …

---

## [How to define subcommands for a \`@main\` command in a Julia app?](https://discourse.julialang.org/t/how-to-define-subcommands-for-a-main-command-in-a-julia-app/134153)

<div class="topic-metadata">

**Author:** [@singularitti](https://discourse.julialang.org/u/singularitti)\
**Replies:** 6\
**Last updated:** [December 2, 2025, 9:35pm UTC](https://discourse.julialang.org/t/how-to-define-subcommands-for-a-main-command-in-a-julia-app/134153 "2025-12-02T21:35:59Z")

</div>

Since Julia now allows us to install an app/command to call it from the Shell by the @main function, I wonder how to mimic cases like some commands having subcommands in @main? Like git add, git status, git clone for git.…

---

## [Experiments trying to use ArgMacros.jl with juliac](https://discourse.julialang.org/t/experiments-trying-to-use-argmacros-jl-with-juliac/125442)

<div class="topic-metadata">

**Author:** [@BenjaminDoran](https://discourse.julialang.org/u/BenjaminDoran)\
**Replies:** 0\
**Last updated:** [February 1, 2025, 1:42am UTC](https://discourse.julialang.org/t/experiments-trying-to-use-argmacros-jl-with-juliac/125442 "2025-02-01T01:42:21Z")

</div>

So, I was playing around with argument parsing in the context of the experimental juliac compilation and trying to use ArgMacros.jl since I have enjoyed its syntax for making CLI scripts in the past. A couple weeks ago …

---

## [What are the current (late 2024) best practices for CLI development?](https://discourse.julialang.org/t/what-are-the-current-late-2024-best-practices-for-cli-development/122013)

<div class="topic-metadata">

**Author:** [@kevbonham](https://discourse.julialang.org/u/kevbonham)\
**Replies:** 3\
**Last updated:** [November 7, 2024, 3:12am UTC](https://discourse.julialang.org/t/what-are-the-current-late-2024-best-practices-for-cli-development/122013 "2024-11-07T03:12:28Z")

</div>

Say someone is developing a package, and wants to include some command line interface. What are current best practices / ways to do this? My motivation here is twofold - I am actively working on such a project, and also …

---

## [\[ANN\] YAArguParser and GivEmXL](https://discourse.julialang.org/t/ann-yaarguparser-and-givemxl/117343)

<div class="topic-metadata">

**Author:** [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Replies:** 0\
**Last updated:** [July 22, 2024, 2:01pm UTC](https://discourse.julialang.org/t/ann-yaarguparser-and-givemxl/117343 "2024-07-22T14:01:21Z")

</div>

Shortly introducing two newly registered packages: YAArguParser.jl and GivEmXL.jl: For details see the respective docs. YAArguParser.jl is yet another parsing command-line arguments to Julia programs, the other ones be…

---

## [Is it possible to pipe into \`julia\` command without it exiting immediately after](https://discourse.julialang.org/t/is-it-possible-to-pipe-into-julia-command-without-it-exiting-immediately-after/116302)

<div class="topic-metadata">

**Author:** [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Replies:** 3\
**Last updated:** [June 27, 2024, 1:11pm UTC](https://discourse.julialang.org/t/is-it-possible-to-pipe-into-julia-command-without-it-exiting-immediately-after/116302 "2024-06-27T13:11:39Z")

</div>

hi there, I am wondering whether there is a flag which prevents julia from closing like echo 'println("my initial command which I would like to show up")' | julia should ideally result in something like julia\> printl…

---

## [Creating a CLI app in Julia](https://discourse.julialang.org/t/creating-a-cli-app-in-julia/111160)

<div class="topic-metadata">

**Author:** [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Replies:** 7\
**Last updated:** [March 10, 2024, 8:40am UTC](https://discourse.julialang.org/t/creating-a-cli-app-in-julia/111160 "2024-03-10T08:40:31Z")

</div>

I have to share my code in a way that my non-programming colleagues can use it on their own. Currently there is a Julia function which accepts a path to an Excel file, containing all data and metadata, does processing, c…

---

## [Easy way to update text in terminal (instead of printing more text)?](https://discourse.julialang.org/t/easy-way-to-update-text-in-terminal-instead-of-printing-more-text/81818)

<div class="topic-metadata">

**Author:** [@greatpet](https://discourse.julialang.org/u/greatpet)\
**Replies:** 7\
**Last updated:** [March 2, 2024, 8:50pm UTC](https://discourse.julialang.org/t/easy-way-to-update-text-in-terminal-instead-of-printing-more-text/81818 "2024-03-02T20:50:48Z")

</div>

I would like to show progress of a for loop, updating the text like like “1/100”, “2/200”, until “100/100”. The rest of the program, before or after the loop, would print text in the usual way without changing old text. …

---

## [How to pass flag-like commandline ARGS to julia -e](https://discourse.julialang.org/t/how-to-pass-flag-like-commandline-args-to-julia-e/108797)

<div class="topic-metadata">

**Author:** [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Replies:** 2\
**Last updated:** [January 14, 2024, 9:00pm UTC](https://discourse.julialang.org/t/how-to-pass-flag-like-commandline-args-to-julia-e/108797 "2024-01-14T21:00:37Z")

</div>

Hello, I just run into the issue, that julia will interprete flags even if passed after -e. The -- also does not seem to help, because it demands a file, but I really just want the -e and no extra file.

---

## [Idea: New julia CLI switches (\`-m\` and \`--pkg\`)](https://discourse.julialang.org/t/idea-new-julia-cli-switches-m-and-pkg/98897)

<div class="topic-metadata">

**Author:** [@pankgeorg](https://discourse.julialang.org/u/pankgeorg)\
**Replies:** 9\
**Last updated:** [January 2, 2024, 2:32pm UTC](https://discourse.julialang.org/t/idea-new-julia-cli-switches-m-and-pkg/98897 "2024-01-02T14:32:08Z")

</div>

\-m: shorthand for -e using Module: Module julia -e "import Pluto; Pluto.run()" is a pattern I happen to use very often With this idea it could get converted to julia -m Pluto which could even run pluto as-is (inv…

---

## [Quarto Julia CLI: Kernel died before replying to kernel\_info](https://discourse.julialang.org/t/quarto-julia-cli-kernel-died-before-replying-to-kernel-info/91416)

<div class="topic-metadata">

**Author:** [@fortunewalla](https://discourse.julialang.org/u/fortunewalla)\
**Replies:** 7\
**Last updated:** [March 17, 2023, 9:38am UTC](https://discourse.julialang.org/t/quarto-julia-cli-kernel-died-before-replying-to-kernel-info/91416 "2023-03-17T09:38:24Z")

</div>

I wanted to try out quarto for Julia code. I created an new Julia environment q and installed IJulia.jl and Plots.jl The jupyter kernelspec & quarto check all seem fine. when trying to render Julia example Using…

---

## [\[ANN\] The Ion command line for Julia developers - written in rust!](https://discourse.julialang.org/t/ann-the-ion-command-line-for-julia-developers-written-in-rust/94495)

<div class="topic-metadata">

**Author:** [@Roger-luo](https://discourse.julialang.org/u/Roger-luo)\
**Replies:** 28\
**Last updated:** [March 16, 2023, 7:07pm UTC](https://discourse.julialang.org/t/ann-the-ion-command-line-for-julia-developers-written-in-rust/94495 "2023-03-16T19:07:52Z")

</div>

I’m pleased to announce a rewrite of Ion in rust to provide a much faster UX and much smaller binary. If you haven’t used Ion, please ignore my previous posts and directly read this one! https://github.com/Roger-luo/Ion …

---

## [Optimization level setting (-O / --optimize)](https://discourse.julialang.org/t/optimization-level-setting-o-optimize/95809)

<div class="topic-metadata">

**Author:** [@airpmb](https://discourse.julialang.org/u/airpmb)\
**Replies:** 1\
**Last updated:** [March 9, 2023, 4:38pm UTC](https://discourse.julialang.org/t/optimization-level-setting-o-optimize/95809 "2023-03-09T16:38:38Z")

</div>

Couple of questions regarding this. First, is there a good way to determine inside the Julia session what the current setting of the optimization level is? Second, is there some reason this behavior is correct? $ juli…

---

## [PSA: Julia 1.9 Change in argument processing --](https://discourse.julialang.org/t/psa-julia-1-9-change-in-argument-processing/95253)

<div class="topic-metadata">

**Author:** [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Replies:** 0\
**Last updated:** [February 27, 2023, 7:00am UTC](https://discourse.julialang.org/t/psa-julia-1-9-change-in-argument-processing/95253 "2023-02-27T07:00:13Z")

</div>

@MilesCranmer discovered a bug in pyjulia that only manifested in Julia 1.9 due to a correction in argument processing. Suppose we have a file printargs.jl with the following content. println(ARGS) If you placed a -- …

---

## [Announcing Term.jl](https://discourse.julialang.org/t/announcing-term-jl/78170)

<div class="topic-metadata">

**Author:** [@FedeClaudi](https://discourse.julialang.org/u/FedeClaudi)\
**Replies:** 23\
**Last updated:** [August 27, 2022, 1:25pm UTC](https://discourse.julialang.org/t/announcing-term-jl/78170 "2022-08-27T13:25:24Z")

</div>

Announcing Term.jl, a package inspired by WIll McGougan’s rich package in Python to produce stylized, structured output for your terminal, in Julia. Docs: https://fedeclaudi.github.io/Term.jl/v0.2/ Term can be used…

---

## [Tooling for Julia command-line scripts](https://discourse.julialang.org/t/tooling-for-julia-command-line-scripts/73915)

<div class="topic-metadata">

**Author:** [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Replies:** 5\
**Last updated:** [January 8, 2022, 9:01am UTC](https://discourse.julialang.org/t/tooling-for-julia-command-line-scripts/73915 "2022-01-08T09:01:20Z")

</div>

Prompted by Jeremy Howard’s reply to @viralbshah’s question about 2022 goals for Julia, one thing I would like to figure out how to make it easier to write and deploy command-line scripts written in Julia. I think the k…

---

## [Creating CLI tools in Julia](https://discourse.julialang.org/t/creating-cli-tools-in-julia/65012)

<div class="topic-metadata">

**Author:** [@satyabrata\_pal](https://discourse.julialang.org/u/satyabrata_pal)\
**Replies:** 6\
**Last updated:** [July 23, 2021, 8:49am UTC](https://discourse.julialang.org/t/creating-cli-tools-in-julia/65012 "2021-07-23T08:49:35Z")

</div>

Hello everyone. I am trying to build CLI tool for my project. Is there any existing library/package in the Julia ecosystem which I can use.
