
OpenVault: Designing a Shared Credentials Layer for AI Skills
A conversation with AI about building a standardized credentials vault for portable Codex, Claude Code, and Cursor skills
This morning I had a conversation with AI about thinking through how we might make more portable AI skills that can use various services and have auth credentials.
The problem came up when I was assembling a collection of Claude Code skills into a shared repo:
A collection of Claude Code skills for personal productivity
I quickly realized that a ton of these skills require credentials—Twitter API tokens, Google Cloud credentials, Porkbun API keys, etc. And I wasn't sure where to put them. Should the .env file live in the root folder? Or in each individual skill's folder? It also made me nervous that folks would end up scattering credentials all over the place, with no centralized location and no standard naming conventions for what the different tokens should be called.
After chatting back and forth with AI, I'm calling this idea OpenVault, and I'm doing an experiment to see how quickly we can build something like this. I'm also just putting my thinking up publicly. I would have shared the ChatGPT conversation directly, but unfortunately OpenAI doesn't allow sharing conversations that are audio-based yet—so I reproduced the conversation here on my blog instead.
A shared credentials layer for portable Codex, Claude Code, and Cursor skills
The Problem
So I've started to assemble my various cloud skills that I'm working on into this GitHub repo. And one thing that's become apparent is that there's a real question of how credentials should work. So I have, for example, a Domain Finder skill, but that requires access to the Portman API. Then I have one that's using Google Calendar to produce reflections, and that requires Google Cloud Credentials. And I have one that is doing a Twitter go-to-market analysis and fetching all the tweets that are responding to a particular tweet, but that requires the Twitter token. And as we add more and more of these credentials, there's a real question of, like, what's the answer to skill reuse and portability? And should we be – in this case, I've allowed a GitHub repo where you can store .env credentials at the level of each skill, but you can also store them at the project level, at the root level, so that you could reuse them potentially between skills. But I think what this points to is that there's a real question around auth credentials and what the vault for an agent auth for something like Cloud Code Skills should be, and what is the portability and reuse story for these various skills.
Absolutely, that's a great question and it's a common puzzle when dealing with multiple integrations. Essentially, you're touching on the need for a flexible but secure way to manage credentials across a set of skills or agents.
Right now, you're considering a .env-based approach, where each skill can have its own environment variables, and that can work fine for smaller setups. But as you scale, having a more structured and centralized credential management solution is really helpful.
In other words, there's a reason a lot of teams end up using something like a secrets manager or a vault service—for example, HashiCorp Vault, AWS Secrets Manager, or even something like Doppler. These tools allow you to store credentials in a centralized place, control access granularly, and rotate them easily without hard-coding anything in your repo.
The benefit of that approach is that each skill can just request the credentials it needs at runtime. You end up with a kind of "credentials layer" that sits beneath all your skills. It makes things more portable because if you move a skill to another project, it can still fetch the credentials it needs from a common vault rather than relying on a specific .env file.
In short, it's definitely worth considering a centralized secrets management solution if you want your skills to be easily portable and reusable. It also helps ensure you don't accidentally commit sensitive tokens into your codebase.
Outlining a Shared Credentials Vault
So if we were to try to build a service here, maybe something that other folks could also use, what do you think would be the outlines of a shared sort of credentials vault layer? And what would we need to like standardize the names of the tokens? Like what do you think would be the recommended approach to stuff like this? Do we handle the OAuth in this vault layer? And is it something that can still live locally? Should it live in the hosted platform? Give me the outlines of what you think this idea, the shape of this idea could be.
Sure! If we were sketching out a shared credentials vault layer that others could use as well, it might look something like this:
1. Core Concept and Architecture We'd essentially be building a small credential management service that acts as a single source of truth for storing API keys, OAuth tokens, and other sensitive credentials. This layer could be something that lives either locally for development or in a hosted environment for production use.
2. Standardizing Credential Names and Access Patterns You'd want a consistent naming convention for each type of credential so that any skill can request, say, a "Twitter_API_Token" or a "Google_Calendar_Credentials" by a known key. Essentially, you'd have a standardized key structure so that skills know what to ask for.
3. Handling OAuth and Refresh Tokens Yes, you can absolutely handle OAuth flows in this layer. For example, the vault service could store not only the initial token but also refresh tokens and handle the logic to refresh them as needed. That way, the skills themselves don't need to worry about the OAuth dance; they just ask the vault for a valid token.
4. Local vs. Hosted You can design it so that during development, everything can run locally (maybe a local instance of the vault service). In a production environment, it could be a small hosted service that you or others deploy (on a cloud function, a small server, or even a managed service like AWS Secrets Manager if you wanted to integrate with existing infrastructure).
5. Security and Access Control You'd want to think about who can access what. Each skill might have a certain role or token that allows it to fetch only the credentials it needs. That way, you have a layer of security that prevents skills from accidentally getting credentials they shouldn't have.
6. Reusability and Portability The end goal is that any new skill can just "plug into" this vault layer. If someone else wants to reuse your domain finder skill or your Twitter analytics skill, they just need to configure the vault with their own credentials and everything else stays the same.
Choosing the Right Backing Layer
What do you recommend in terms of what the initial backing layer could be for this service locally? How can we have different adapters maybe? Or is that even a good idea? But I'm thinking that the simplest thing initially if we wanted to open-source something is almost like standardizing the names of the credentials and having a file that stores that. Or I guess we could have a SQLite database. It seems like a file might be the easiest just so people can inspect what's going on there. But I'm curious, what would you recommend as the initial approach to a service like this?
Yeah, absolutely. Starting simple is a great idea, especially if you're thinking about something that can be open-sourced and easily adopted.
A file-based approach is indeed a nice, straightforward starting point. You could essentially use something like a simple JSON or YAML file that people can just read and edit. That way, if someone wants to see what credentials are being stored, they just pop open a text editor. And yes, you could have a standard naming convention in that file for each credential type.
If you want just a tiny bit more structure, something like SQLite is still super lightweight and easy to set up. It gives you a bit more querying power if you ever need it, but it doesn't add a lot of complexity. And you could still have that file be human-readable if you want to make it easy for people to inspect.
In terms of adapters—yeah, that's a great idea for later on. You could start simple with a file or SQLite adapter for local development. Then, as you grow, you could add adapters for something like AWS Secrets Manager or HashiCorp Vault for people who want a more robust hosted solution. That way, you offer a pluggable architecture where folks can start simple and then upgrade their backend as needed.
So in short, I'd say start with a straightforward file or SQLite approach, standardize the credential names, and then think about adapters down the line. That gives people a super accessible starting point and a path to grow.
Why Not Just .env Files?
Why not just do a simple flat file, like a simple .env file, and maybe also then just run it through some service, like some utility that we have locally that could validate that the credential names match from the standard library of credential names, and we just document what all the various possible credential names is. But why not have something as simple as a standard .env file to store those?
Yeah, I mean, that's totally a solid approach, and it's honestly as simple as it gets. If you're looking to keep things super straightforward, using a .env file definitely makes a lot of sense. It's a format that people already know, and it's really easy to edit and version control if needed.
And yeah, having a little local utility or a simple script that just checks those credential names against a standard list is a great idea. You just document that, say, these are the supported credential keys—like "TWITTER_TOKEN" or "GOOGLE_CALENDAR_SECRET"—and then the utility can just validate that the .env file matches that structure.
So it's definitely a perfectly good way to start. It keeps it really lightweight. And then later on, if you want to evolve into something more sophisticated, you can. But there's nothing wrong with starting with a simple .env file approach at all. It's kind of like starting from the simplest building block and just building up from there if you need to.
The SDK Approach
Yeah, and what about we could essentially pick like it could be something that you install the vault really easily and so we could have like a nice NPX style, you know or brew install for this Auth vault and or credentials vault and then from there we could provide a very simple SDK that could be configured to either read local .env files that are relative to the skill in the same folder or it could also check the vault so that way like even if you were to use this vault SDK would still read the standard .env setups that folks have or I could try to look for one of these vault folders, which maybe is like in some standard place or there's like some way to configure it. What do you think about that?
I think that's a fantastic approach. Basically, you're giving people the best of both worlds. If you set it up so that someone can install this little vault tool easily—like with an npx command or a Brew formula—then it becomes super easy for them to spin it up and use it. And having a simple SDK that can automatically look for either the .env files locally or check a more centralized vault location just adds that layer of flexibility.
What that means is that people who just want to use a local .env file can do that out of the box. And then if they want to move to a shared vault later, they don't have to change their code much—they just reconfigure the SDK to point to the vault. It's a really nice, incremental adoption path.
So yeah, I think that's a really good idea. You're basically making it easy for people to start simple and then scale up if they need to, without locking them into one approach. It's a great way to go.
Other Considerations
Any other things that you think are worth for us to think about or consider here?
Yeah, definitely a few final thoughts to consider. One is just to think a little bit about how you want to handle security and access controls in the longer term. So, for example, if you do have a shared vault, maybe think about how you authenticate which skills or which users have access to which credentials, just so that there's a nice layer of security as you scale. But you can keep that pretty simple to start with.
Another thing to think about is just documentation and making it really easy for other developers to jump in. So if you're open-sourcing this or sharing it, having a really nice, clean README with examples of how to use it with a .env file and how to switch to the vault would be super helpful.
And then maybe just think about versioning or how you want to handle updates over time. That way, if you add more features or more integrations later, it's really easy for people to keep up.
But honestly, it sounds like you've got a solid plan. Starting simple and then layering on more complexity only if you need it is definitely the way to go.
Drafting the Documentation
Can you please write the documentation for what we would put in the GitHub repo and how this could work so that we can see that? And then separately, can you just write a plan that I can pop into Cloud Code or into Codex so that it could set up everything we need and it could break down things into tasks, or if you have a set of tasks that you think would be good, let me know. And let's use this as the draft to ship something.
Absolutely, let's do it!
GitHub Repo Documentation
# Credentials Vault for Skills
Welcome to the Credentials Vault! This is a simple, developer-friendly
way to manage API credentials for your skills and agents. With this
vault, you can start with a simple .env file approach and grow into
using a shared vault as your needs evolve.
## Getting Started
1. **Installation:**
npx install-credentials-vault
# or
brew install credentials-vault
2. **Using a .env File:**
Create a .env file in your project folder with standard keys like
TWITTER_TOKEN, GOOGLE_CALENDAR_SECRET, etc.
3. **Switching to a Shared Vault:**
Configure the SDK to point to a central location.
4. **Validation Tool:**
We provide a validation utility that checks your .env file against
the standard credential names.
Plan for Claude Code or Codex:
- Initialize a New Project
- Install Dependencies (dotenv, etc.)
- Implement the SDK
- Create a Validation Script
- Write Documentation
- Testing
Adding Multi-Language SDKs and CLI
So, can you also consider that eventually we'll want to have Python SDKs and JavaScript TypeScript sort of SDKs? And can you also consider that this would be a CLI tool that you can use easily to do things like add a credential, check for a credential, and just like think about how that works and add that all to this doc that we are working on? And then separately, what I was asking you for, well, let's start with that.
Absolutely, let's expand on that and incorporate those ideas into the documentation.
Features:
- Multi-language SDKs: We offer SDKs for JavaScript/TypeScript and Python
- Simple CLI Tool: Use our command-line interface to add, check, and manage credentials effortlessly
- Flexible Storage: Start with a
.envfile or switch to a shared vault as your needs grow
CLI Usage:
# Add a credential
credentials-vault add TWITTER_TOKEN your_twitter_token
# Check a credential
credentials-vault check TWITTER_TOKEN
# List all credentials
credentials-vault list
# Validate your .env file
credentials-vault validate
SDK Usage (JavaScript/TypeScript):
const vault = require('credentials-vault');
const twitterToken = vault.get('TWITTER_TOKEN');
SDK Usage (Python):
from credentials_vault import Vault
vault = Vault()
twitter_token = vault.get('TWITTER_TOKEN')
Clarifying the Motivation
Yeah, I want to clearly communicate why we're building this project and what the motivation is. So let's have a back and forth where you ask me for more clarification and see if we've captured it. So the main issue right now is that people are writing all these cloud skills, a bunch of them, and the skills are also applicable to Codex and other services, and often these skills will require authentication or API keys of some sort. And first off, lots of folks just aren't that familiar with even how to do the authentication, so they'll have a tricky time even getting it. But there's no standard. Everyone might call their token something else, and so it's actually like, should you be storing a Twitter token for every file? It's just given that we have this local file system abstraction, there's questions about how auth credentials and tokens should be stored locally in a way that makes the skills portable, reusable, and that there's some standard to congeal around.
Absolutely, that makes a lot of sense, and it's a great motivation. Let's unpack that a bit. So basically, the pain point is that there's this ecosystem of skills—whether they're for Claude, Codex, or other services—where each skill needs some kind of API token or authentication. But right now, it's kind of the Wild West, right? Everyone is naming their tokens differently. Some people might store a Twitter token in one file and a Google token in another. There's no consistency, and there's no standard approach. And then on top of that, a lot of people just aren't comfortable with how to handle authentication in the first place. So they need a pattern they can follow.
So what you're aiming to do is create this standard layer that makes it really easy and consistent. You want a simple way for people to store their credentials locally, in a known format, so that any skill can just plug into that and grab what it needs without having to reinvent the wheel. And then as a side benefit, you're making those skills more portable and reusable because they're all speaking the same language when it comes to credentials.
Does that sound like a good capture of the motivation? Let me know if there's anything else you want to clarify or add!
Writing the Intro and Twitter Thread
Yeah, can you make this the intro and motivation section of the GitHub Readme, and also can you separately write me a Twitter thread that explains this and introduces it, but don't make it too markety or anything else, just try to make it sound like something I would write.
Introduction & Motivation (GitHub README):
In the world of AI skills—whether you're building for Claude, Codex, or other services—there's a common challenge developers face. Each skill often needs to authenticate with various APIs, requiring tokens or credentials. Right now, there's no standard way of handling this. Everyone names and stores their tokens differently, which makes it harder to share and reuse these skills. Plus, many developers aren't familiar with the best practices for handling authentication in the first place.
That's why we built the Credentials Vault. Our goal is to provide a simple, standardized way to manage API credentials locally and, if needed, through a shared vault. This makes your skills more portable and reusable, ensures that everyone is on the same page, and takes the guesswork out of authentication.
Twitter Thread:
🧵 Hey folks! I've been noticing a common headache in the AI dev world: everyone's got these cool skills for Claude, Codex, etc., but managing API tokens is kind of a mess. (1/5)
Every skill needs some token or key, but there's no standard way to do it. People name things differently, store them in random places, and it gets confusing fast. (2/5)
I figured it's time to simplify. So I'm working on a little tool called the Credentials Vault. It's basically a friendly way to keep all your API tokens in one standard place, so you don't have to reinvent the wheel each time. (3/5)
You can start with a simple .env file and then move to a shared vault if you want. The idea is to make skills more portable and let everyone speak the same "credential language." (4/5)
Anyway, just wanted to share what I'm up to. Hopefully this saves some headaches and lets you focus more on building awesome stuff. Cheers! (5/5)
Updating for SDKs and Adapters
Okay, can you also say that there will be SDKs in every language, where it will fall back to simple .env files in the local folders if needed, but if a shared vault is defined on this, then the SDKs will use the shared vaults, will prioritize the shared vaults, and that initially everything is on the local file system as plain text files, but we could have adapters to database-backed services or hosted vault services. And can you also modify both the intro and this tweet thread just a little bit to capture that?
Updated Introduction & Motivation:
In the world of AI skills—whether you're building for Claude, Codex, or other services—there's a common challenge developers face. Each skill often needs API tokens or credentials, and right now there's no standard way to handle that. Everyone stores and names their tokens differently, and many folks aren't familiar with best practices for authentication.
That's why we built the Credentials Vault. Our goal is to provide a simple, standardized way to manage credentials. Initially, everything is stored locally in plain .env files right alongside your skills. But as you grow, the SDKs—available in multiple languages like JavaScript/TypeScript and Python—can fall back to these local files or switch to a shared vault if defined. This means you can start simple and then plug in database-backed or hosted vault services later on.
Updated Twitter Thread:
🧵 Hey folks! Noticed a common headache in the AI dev world: lots of cool skills for Claude, Codex, etc., but managing API tokens is a bit wild west. (1/6)
Everyone's got tokens named differently and stored all over the place, and there's no standard approach. Plus, not everyone's comfortable with auth setup. (2/6)
So I'm building a little tool called the Credentials Vault. It lets you keep all your tokens in one standard place, starting with simple .env files. (3/6)
The cool part: the SDKs (in JS/TS, Python, etc.) will fall back to those local files or switch to a shared vault if you define one. You can start simple and get fancier later. (4/6)
Eventually, you can even plug in database-backed or hosted vault services. It's all about making skills portable and taking the guesswork out of auth. (5/6)
Just wanted to share what I'm up to—hope it helps you focus more on building awesome stuff and less on wrestling with tokens. Cheers! (6/6)
Naming Exploration
Okay, based on everything we've talked about, can you suggest a set of names that you think might be a fun or appropriate name for this service? Like stuff around all faults, but open to other suggestions, and do some like basic web searches to also see like are these generally like available names, or are they going to be confused with existing services?
Sure! Based on some quick searches, here are a few creative name ideas for your credential management service:
- Vaultify – blends "vault" and "simplify" to show it's easy to use
- SecureVault – emphasizes security
- CredSafe or AuthGuard – highlight safety and protection
- KeyHaven or LockBox – suggests a secure place for credentials
Just make sure to check domain availability and avoid any names that might be easily confused with existing services.
Yeah, I like the idea of like sharing credentials and the standard credentials layer. So like I think things like KeyHaven and Lockbox are maybe closer or even like Vaultify. Like what do you think? Yeah like the shared auth layer when you brainstorm a little bit more around those and then like do some quick searches to see if you find anything that would make it not a usable name.
So, from what I found, names like "Vaultify," "KeyHaven," and "LockBox" might work, but you'll want to do a couple of quick checks. You'd need to look up if the domain names for these options are actually available and also see if any of them are already trademarked in a similar space.
Can you ideate a longer set of names in these directions around the themes that I expressed?
Absolutely, let's run with that theme:
- CredLayer – Short and sweet, focusing on the credential layer idea
- KeyCloakroom – Like a cloakroom for your keys
- TokenHarbor – A safe harbor for all your tokens
- AuthLayer – Emphasizing it's a shared layer for authentication
- VaultBridge – A bridge between local and shared credential storage
- CredNest – A nest where credentials are kept safe
- KeyLayer – Simple, focusing on the layer concept
- TokenMesh – A network that holds all your tokens together
- SharedVault – Very direct, emphasizing the shared nature
- CredHarbor – A place where credentials find safe harbor
Yeah, do one more pass around these. Let's take another. I like auth-layer. I like the word vault. Yeah, I think those are good directions. Can you do a pass on those?
Absolutely, let's do another round focusing on "auth," "layer," and "vault":
- AuthVault – Straightforward and descriptive
- VaultLayer – Emphasizes it's a vault in the form of a shared layer
- AuthNest – Mixing authentication with a cozy "nest"
- SecureLayer – Highlighting the security aspect
- VaultNest – Combining "vault" with "nest"
- LayerVault – Flipping the words around
- AuthKeep – A "keep" is a fortified tower
- VaultHub – A central hub for vaulting credentials
- LayerLock – A layered locking mechanism
- AuthVaultLayer – Spells out exactly what it is
What about something like OpenAuth? It looks like that in particular is open, but what about something like OpenVault or OpenCreds? Something like that.
It looks like "OpenAuth" is indeed open, and doing a quick check on "OpenVault" and "OpenCreds," they also seem to be available as names that aren't heavily tied to existing services, at least in this specific context.
So "OpenVault" or "OpenCreds" could definitely work if you like the feel of those. They carry that "open" sense of transparency and accessibility along with the "vault" or "creds" idea. Definitely a good direction to go in if those resonate with you!
The OpenVault PRD
Can you write a high-level PRD for what we're building and call it OpenVault, so we do the sort of name of the things in the SDK, and just write like a high-level PRD and intro GitHub documentation for everything that we've discussed?
OpenVault PRD (Product Requirements Document)
Overview:
OpenVault is a credential management layer designed to standardize how API keys and authentication tokens are handled for AI skills and other applications. It provides a simple, consistent way to store credentials locally using .env files and offers the flexibility to transition to a shared vault as needed.
Core Features:
-
Local Credential Storage – Store credentials in
.envfiles in a consistent, standardized format with a validation tool -
Shared Vault Integration – Allow seamless switching from local
.envfiles to a shared vault with adapters for database-backed or hosted vault services -
Multi-language SDKs – Offer SDKs in JavaScript/TypeScript and Python that can read from local or shared vaults
-
CLI Tool – Command-line interface to add, check, list credentials, and validate
.envfiles
Goals:
- Simplify credential management for developers
- Standardize how authentication tokens are named and stored
- Provide flexibility to move from local to shared storage
Non-goals:
- Not intended to replace full-fledged enterprise secrets management solutions
- Not aiming to handle every possible security scenario
GitHub Documentation Introduction:
Welcome to OpenVault! This project is all about making API credential management a breeze. Whether you're building AI skills for Claude, Codex, or any other platform, OpenVault helps you store and manage your tokens and keys in a consistent, easy way.
One-Line Description
What should be the one line description - remember to communicate the utility of making it easy to have shared auth layer for portable Codex / Claude Code / Cursor skills
Here are a few one-line description options:
Very tight (GitHub-native, crisp):
- A shared credentials layer for portable Codex, Claude Code, and Cursor skills
- Standardized auth and credentials for reusable AI coding skills
- A simple shared auth layer for portable AI code skills
Slightly more descriptive:
- A simple, standardized credentials vault for portable Codex, Claude Code, and Cursor skills
- Shared auth and credentials for reusable AI skills across Codex, Claude Code, and Cursor
My top recommendation: A shared credentials layer for portable Codex, Claude Code, and Cursor skills ← best balance
License Recommendation
What license do you recommend for this to make it very permissive? MIT?
Short answer: yes — MIT is exactly right 👍
Why MIT fits OpenVault perfectly:
- ✅ Very permissive — people can use it in open source, closed source, commercial products, and internal tooling
- ✅ Minimal friction for adoption
- ✅ Familiar and trusted by devs
- ✅ Aligns with "standard / layer / infrastructure" vibes
- ✅ Allows hosted services, forks, SDKs, and internal modifications without drama
For something that you want to become a de facto standard, be embedded into tools like Codex / Cursor / Claude Code workflows, and not scare people with licensing questions — MIT is the default good choice.
Why not other options?
- Apache 2.0 – Slightly more complex, patent clause is nice but overkill here
- BSD – Similar to MIT, just less common now
- GPL / AGPL – ❌ Would block internal / commercial use
MIT is the right call.
Future Ideas
A few follow-up ideas that came out of this conversation:
-
Standardized setup instructions — Document how to obtain API credentials from each provider (Twitter, Google, Porkbun, etc.) in a consistent format that skills can reference.
-
Agent-friendly credential provisioning — Utilities that let agents generate and fetch credentials from service providers with more limited access scopes. Imagine Porkbun, for example, offering a way for an agent to create its own API credentials with a more restricted scope—or using the shared vault as a layer for limiting permissions, so that not every company needs to implement its own fine-grained access controls.
-
Provider integrations for token generation — Services that allow token providers to generate credentials specifically for agent use, with ways for agents to fetch or create their own tokens programmatically.
-
Portability as agents become the integrators — More and more services will be provisioned and used by API agents. Agents will be building the integrations and managing them. This makes authentication, security, and portability increasingly important.
-
A simple GUI for agent credentials — Something like 1Password, but purpose-built for agent OAuth flows and API credentials. A desktop app where you can see which services are connected, handle OAuth flows with a nice UI, manage token refresh, and revoke access when needed—all built around an open standard. The goal would be making credential management as easy for agents as password managers made it for humans.
There are a lot of considerations to making a service like this secure. Having a centralized vault rather than .env files scattered across your file system might be a better solution—but of course, centralizing credentials also creates a single point of failure. Tradeoffs everywhere.
The experiment continues.