o o o o
<|> <|> <|\ /|>
/ \ < > / \\o o// \
o/ \o \o__ __o | o o \o/ v\ /v \o/ __o__
<|__ __|> | |> o__/_ <|> <|> _\__o__ | <\/> | /> \
/ \ / \ < > | < > < > \ / \ / \ o/
o/ \o \o/ | \o o/ \o/ \o/ <|
/v v\ | o v\ /v | | \\
/> <\ / \ <\__ <\/> / \ / \ _\o__</
/
o
__/>
arty-mc is a Python package providing a terminal file manager for JFrog Artifactory.
It provides a dual-pane interface similar to Midnight Commander, allowing you to browse, filter, copy and delete files and folders between the local filesystem and Artifactory repositories directly from the terminal.
It uses Textual for the terminal interface and dohq-artifactory for interacting with Artifactory repositories.
Managing artifacts in Artifactory is often done through the web UI, generic tools like curl or the jf-cli.
For developers who prefer working directly in the terminal, this can be inconvenient.
- Dual-pane terminal interface
- Browse/Filer local filesystem and Artifactory repositories
- Copy files between panes
- Delete artifacts
- Simple YAML configuration
- Python 3.9+
- Access to an Artifactory server
- Artifactory API token
pip install arty-mcCreate a configuration file in your home directory:
~/.arty-mc.yml
Example configuration:
server: https://artifactory.company.com/artifactory
user: myuser
token: ********************************************| Field | Description |
|---|---|
| server | Base URL of the Artifactory server |
| user | Artifactory username |
| token | Artifactory API token |
Run the tool directly:
python -m arty_mc <repository>Example:
python -m arty_mc libs-release-localThis starts the dual-pane interface where you can browse your local filesystem and the selected repository.
Important Notes
⚠️ Warning: Deleting artifacts from repositories is irreversible and can't be canceled.
Empty Directories on your local filesystem are highlighted in yellow.
❌ These cannot be copied to Artifactory as they are not supported.Dead Symlinks on your local filesystem are highlighted in red.
❌ These cannot be copied to Artifactory.Unreadable Files on your local filesystem are highlighted in grey.
❌ These cannot be copied to Artifactory either.💡 Tip:
To ensure a folder is created in Artifactory, add a placeholder file inside it, for example:.keep
⚠️ File counts and folder sizes may differ between the local and remote repository because Artifactory performs deduplication, counting identical files only once.
- Start arty-mc with a repository
- Navigate the local filesystem in one pane
- Browse the Artifactory repository in the other pane
- Copy files between panes
- Delete artifacts if needed
| Key | Action |
|---|---|
| ↑ ↓ | Navigate |
| Enter | Open Directory |
| Tab | Switch Pane |
| F2 | Cancel Copy Operation |
| F5 | Copy |
| F8 | Delete |
| F10 | Quit |
You can build a binary using PyInstaller.
Install PyInstaller:
pip install pyinstallerBuild the binary:
-—onefile: slower startup caused by runtime extraction
pyinstaller --onefile --distpath dist --name arty-mc arty_mc/arty_mc.py-—onedir: faster after initial startup
pyinstaller --onedir --distpath dist --name arty-mc arty_mc/arty_mc.pyThe compiled executable will appear in:
dist/arty-mc/
You can run it without a Python environment.
You can also build this python package
git clone https://github.com/tino-waldner/arty-mc.git
cd arty-mc
mkdir .venv
python3 -m venv .venv
source .venv/bin/activate
pip install build twine
python -m build
twine check dist/*
twine upload dist/*- Do not commit your
.arty-mc.ymlfile - Protect your API token
- Prefer API tokens instead of passwords
This software is provided "as is" without warranty of any kind.
The tool may contain bugs or incomplete functionality and should be used at your own risk. The author assumes no responsibility or liability for any damage, data loss, system malfunction, or unintended modifications caused by the use of this software.
Always verify actions such as uploading, deleting, or overwriting artifacts, especially when working with production repositories.
This project is not affiliated with or endorsed by JFrog.
JFrog and Artifactory are trademarks of JFrog Ltd.
MIT License
