[ANN] B7nSecretsManagerUnoffClient.jl - An unofficial Julia client for Bitwarden Secrets Manager

Hello Julia Community!

I’m excited to share my work on BitwardenSecretsManagerUnofficialClient.jl, an unofficial Julia client for Bitwarden Secrets Manager.

What is Bitwarden Secrets Manager?

For those unfamiliar, Bitwarden Secrets Manager is a tool designed for developers and DevOps teams to securely store and manage sensitive application secrets like API keys, database credentials, and other confidential information. It’s an extension of the Bitwarden password management platform that specifically addresses development needs.

Why I Created This Package

As Julia is increasingly used in production environments, securely managing secrets becomes crucial. However, I noticed a gap in the ecosystem for a Julia-native way to interact with established secrets management solutions.

This package aims to bridge that gap by providing a type-safe, ergonomic Julia interface to Bitwarden Secrets Manager through its CLI.

Current Features

  • :key: Partial access to Bitwarden Secrets Manager functionality through bws CLI
  • :arrows_counterclockwise: Type-safe Julia interface with automatic type conversions
  • :hammer_and_wrench: Support for organizations, projects, and secrets management
  • :package: Automatic CLI binary installation and management
  • :jigsaw: Pipeline-friendly API with functional composition

Example Usage

Here’s a quick example of how you can use the package:

using BitwardenSecretsManagerUnofficialClient

# Create a client
client = BitwardenClient()

# Authenticate with your access token
settings = ClientSettings(access_token="your_access_token")
client = BitwardenClient(settings)

# List secrets in an organization
project_id = ProjectID("your_project_id")
secrets_list = client |> secrets |> sc -> list(sc, your_project_id)

# Get a specific secret
secret_info = client |> secrets |> sc -> get(sc, SecretID("secret-uuid"))

The API is designed to be both intuitive and composable, allowing for functional-style chaining of operations.

Development Status

:warning: Important: This project is currently in alpha stage. The API is not yet stable and may change significantly between versions. I don’t recommend using it in production environments just yet.

Prerequisites

  • Julia 1.10 or higher
  • Internet connection (for initial CLI binary download)
  • A Bitwarden account with Secrets Manager access
  • Valid Bitwarden access token

Installation

Since this package is not yet registered in the Julia General Registry, you’ll need to install it directly from GitHub:

using Pkg
Pkg.add(url="https://github.com/s-celles/BitwardenSecretsManagerUnofficialClient.jl")

Future Plans

I’m actively working on:

  1. Stabilizing the API
  2. Adding comprehensive test coverage
  3. Improving error handling and documentation
  4. Supporting more advanced Bitwarden Secrets Manager features

Feedback and Contributions

I would love to hear your thoughts, suggestions, and feedback! Feel free to:

  • Open issues on GitHub with bug reports or feature requests
  • Submit pull requests
  • Share how you’re using or planning to use this package
  • Suggest improvements to the API design

Links

Thank you for your interest, and I look forward to your feedback!

8 Likes