# Julia alternative for project.scripts (and Typer)

**URL:** <https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129>\
**Category:** General Usage\
**Tags:** python, cli\
**Created:** [May 15, 2026, 9:15am UTC](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129 "2026-05-15T09:15:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lilachint](https://avatars.discourse-cdn.com/v4/letter/l/ee7513/32.png) [@lilachint](https://discourse.julialang.org/u/lilachint)\
**Post date:** [May 15, 2026, 9:15am UTC](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129/1 "2026-05-15T09:15:25Z")

</div>

I used to use Python to build CLI applications, and using pip I could conveniently define `[project.scripts]` in `pyproject.toml`, e.g.

```toml
[project.scripts]
gradupe = "gradupe.cli:app"

```

Along with using [Typer](https://typer.tiangolo.com/). I could call `gradupe [flags]` directly in the CLI after installing the package with pip. What is the alternative workflow in Julia? I want to port the tool to Julia for performance benchmarking. Thanks!

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [May 15, 2026, 1:57pm UTC](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129/2 "2026-05-15T13:57:18Z")

</div>

Have a look at [Comonicon](https://github.com/comonicon/Comonicon.jl) or [ArgParse](https://github.com/carlobaldassi/ArgParse.jl).

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [May 15, 2026, 2:26pm UTC](https://discourse.julialang.org/t/julia-alternative-for-project-scripts-and-typer/137129/3 "2026-05-15T14:26:59Z")

</div>

The [`[project.scripts]` CLI](https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#creating-executable-scripts) part looks a lot like [Pkg Apps](https://pkgdocs.julialang.org/v1/apps), though you can’t specify an entry point function like `gradupe.cli.app` because Julia standardizes it to `main` registered as a module’s entrypoint by a `(@main)` macro call.
