Datakit

July 7, 2026 · View on GitHub

.. image:: https://img.shields.io/pypi/v/datakit-core.svg :target: https://pypi.python.org/pypi/datakit-core

.. image:: https://github.com/associatedpress/datakit-core/actions/workflows/main.yml/badge.svg :target: https://github.com/associatedpress/datakit-core/actions/workflows/main.yml :alt: Build status on Github Actions

.. image:: https://readthedocs.org/projects/datakit-core/badge/?version=latest :target: https://datakit-core.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

======= Datakit

Datakit is a pluggable command-line tool for managing the life cycle of data projects.

The Associated Press Data Team uses Datakit to auto-generate project skeletons, archive and share data on Amazon S3, and other routine tasks.

Datakit is a thin wrapper around the Cliff_ command-line framework and is intended for use with a growing ecosystem of plugins.

Feel free to use our plugins on Github_, or fork and modify them to suit your needs.

If you're comfortable programming in Python, you can create your own plugins (see :ref:creating-plugins).

Installation

Datakit is distributed as a command-line tool. The recommended way to install it is with uv_, which installs the datakit command into its own isolated environment::

$ uv tool install datakit-core

Plugins must live in the same environment as datakit so it can discover them. Install them alongside core with --with::

$ uv tool install datakit-core --with datakit-project

To add a plugin to an existing install, re-run the command with the plugins you want (uv will update the tool in place)::

$ uv tool install datakit-core --with datakit-project --with datakit-data

If you don't have uv, see its installation docs <https://docs.astral.sh/uv/getting-started/installation/>_.

Usage

After installing one or more plugins, Datakit can be used to invoke the commands provided by those plugins.

To see which commands plugins provide, try the --help flag::

$ datakit --help

Example: datakit-project


Install ``datakit-project`` alongside core::

    $ uv tool install datakit-core --with datakit-project

The plugin provides a ``project create`` command. You need to specify a Cookiecutter_ template to use this command, for example the AP's R template:

.. image:: http://data.ap.org/projects/2019/datakit-docs/img/2.gif

That's the basic recipe for working with plugins: install, explore, and invoke! [1]_

Configuration
=============

Many plugins need configuration to work — API tokens, bucket names, default
paths, and the like. Datakit ships a generic ``config`` command family that
reads each installed plugin's declared configuration schema, so you use the
same commands no matter which plugin you're setting up. Configuration is stored
per plugin under ``~/.datakit/plugins/<plugin>/config.json``.

List every plugin's configuration and whether each value is set::

    $ datakit config list

``datakit config status`` is an alias for ``list``.

Interactively fill in any unset values (secrets are entered hidden). Pass a
plugin slug to limit it to one plugin::

    $ datakit config init
    $ datakit config init datakit-github

Set a single value. Omit the value to be prompted for it (hidden, if the field
is a secret)::

    $ datakit config set datakit-github github_api_key
    $ datakit config set datakit-project default_template gh:associatedpress/cookiecutter-r-project

Verify that configured values actually work — plugins can attach validators that
check a token authenticates or a bucket is reachable. A non-zero exit status
signals a failure, so this is handy in scripts::

    $ datakit config verify
    $ datakit config verify datakit-github

Credits
=======

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. [1] Plugins may also provide more robust docs, so don't forget to check those out when available.

.. _our plugins on Github: https://github.com/search?q=topic%3Adatakit-cli+org%3Aassociatedpress&type=Repositories
.. _uv: https://docs.astral.sh/uv/
.. _Cliff: http://docs.openstack.org/developer/cliff/index.html
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _datakit-project: http://datakit-project.readthedocs.io/en/latest/
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage