Set up Pelican¶
Abstract
The Pelican Platform is the software that powers the OSDF. In this guide, you'll learn:
- how to install the Pelican client
- basics of using the Pelican client
Install the Pelican client¶
We recommend that you use the Pelican CLI (command line interface) client for most purposes. To install the Pelican CLI, follow the instructions for your operating system:
For additional ways to install the Pelican CLI client, see the Pelican documentation.
Other Pelican clients
There are other Pelican clients for interacting with Pelican federations such as the OSDF. For more information, see the Pelican client documentation.
For the purposes of this website, we assume that you are using the Pelican CLI client!
Confirm installation¶
Let's confirm you have Pelican installed by running the following command:
pelican --version
This command should work regardless of your operating system and will display the version number, as well as some information about the software build.
For example,
$ pelican --version
Version: 7.19.2
Build Date: 2025-09-11T16:10:33Z
Build Commit: 298fba8f7a7801adc35b4a3620d117ad38bb436a
Built By: goreleaser
Test download¶
Next, you should test that you can download a public object from the OSDF. Run the following command:
pelican object get osdf:///pelicanplatform/test/hello-world.txt ./
You may or may not see a progress bar as part of the download - it depends on how quickly the object can be downloaded. For example:
$ pelican object get osdf:///pelicanplatform/test/hello-world.txt ./
hello-world.txt 27.00b / 27.00b [=======================================] Done!
If successful, you should see a new file in your directory called hello-world.txt, with the following contents:
If you are seeing this message, getting an object from OSDF was successful.
Pelican client basics¶
Understanding the test command you ran above is a good introduction to how Pelican works.
Commands¶
Most users will only ever use the pelican object set of commands.
To see all the available commands, run this:
pelican object --help
Other pelican commands
You can see the other available sets of commands with
pelican --help
We recommend you avoid using these other commands unless you are specifically told to use one. These other sets of commands are generally used by the admins running a Pelican federation.
If you are interested in learning more about these commands, we recommend reading the Pelican docs.
The most common commands you'll use are
| Command | Description |
|---|---|
pelican object ls |
list an object or namespace within a federation |
pelican object get |
download an object from a federation |
pelican object put |
upload an object to a federation |
The Pelican URL¶
You usually need to provide a "Pelican URL" that specifies the address of the object or namespace that you are interacting with. For objects in the OSDF, this URL has the following format:
osdf:///<namespace>/<object_name>
- The
osdf://prefix tells Pelican to use the OSDF. - The
/<namespace>/part tells Pelican where to find the desired dataset(s). - The
<object_name>part tells Pelican the specific object to find.
If you are managing the data in a namespace, understanding the distinction between the namespace part and the object part is important. But otherwise, most end users won't need to know the difference.
Altogether now¶
You now have all the pieces to understand the test command that you ran earlier:
pelican object get osdf:///pelicanplatform/test/hello-world.txt ./
pelican object getis used to download an object from a Pelican federationosdf://tells Pelican to use the OSDF/pelicanplatform/tells Pelican to look in thepelicanplatformnamespacetest/hello-world.txttells Pelican to look for the object namedtest/hello-world.txt./tells Pelican to download the object to the current directory
What's in an (object's) name?
You may have noticed in the explanation that Pelican sees the object name as test/hello-world.txt but when you downloaded the object,
the file was saved as hello-world.txt!
While Pelican uses the bucket-object paradigm (like S3), it knows when and how to translate into the traditional directory-file paradigm
when appropriate. In fact, at the Pelican origin serving the pelicanplatform namespace, the test/hello-world.txt object almost
certainly maps to a file hello-world.txt inside of a directory test in the connected data storage.