Skip to content

r3rc/tinker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinker

Workspace toolkit for managing sources, secrets, profiles, and SSH keys.

Zero external services. Filesystem storage. Single binary.

Features

  • Sources — Clone and sync reference repositories per project
  • Secrets — PIN-protected encrypted vault using age
  • Profiles — Named environments with env vars, git config, and SSH key
  • SSH — Generate and manage ed25519 keys per profile

Installation

deno install -A -n tinker ./cli/main.ts

Quick Start

# Add a reference source to the current project
tinker sources add https://github.com/denoland/deno_std

# Store a secret
tinker secrets set MY_TOKEN s3cr3t

# Create and configure a profile
tinker profiles create work
tinker profiles set-var work NODE_ENV production
tinker profiles set-git work user.email work@example.com
tinker ssh gen-key work

# Activate a profile
eval $(tinker profiles apply work)

CLI Commands

Sources

Manage reference source repositories. Clones are cached globally at ~/.tinker/sources/; a project-local symlink is created at .tinker/sources/<name> pointing to the global clone.

tinker sources list

tinker sources add <url> [--name <name>]

tinker sources remove <name>
# alias: tinker sources rm <name>

tinker sources sync

Secrets

Encrypted secrets stored globally at ~/.tinker/secrets/vault.age. All operations require a PIN.

On the first set, tinker creates the vault and asks for PIN confirmation. Keep that PIN — there is no recovery path if it is lost.

tinker secrets set <key> <value>

tinker secrets get <key>

tinker secrets list

tinker secrets remove <key>
# alias: tinker secrets rm <key>

Profiles

Named environments stored at ~/.tinker/profiles/. Activate with eval.

tinker profiles create <name>

tinker profiles delete <name>
# alias: tinker profiles rm <name>

tinker profiles list

tinker profiles show <name>

# Env vars
tinker profiles set-var <profile> <key> <value>
tinker profiles unset-var <profile> <key>

# Git config
tinker profiles set-git <profile> <key> <value>
tinker profiles unset-git <profile> <key>

# SSH key
tinker profiles set-ssh-key <profile> <path>
tinker profiles unset-ssh-key <profile>

# Activate (prints export statements)
eval $(tinker profiles apply <name>)

SSH

Generate and manage ed25519 SSH keys for profiles. Keys are stored at ~/.tinker/ssh/<profile>/.

tinker ssh gen-key <profile> [--comment <comment>]

tinker ssh set-key <profile> <path>

tinker ssh remove-key <profile>
# alias: tinker ssh rm-key <profile>

tinker ssh show <profile>

Project Config

Per-project state lives in .tinker/config.json. Sources are tracked there; tinker walks up from cwd to find the project root (.tinker/ or .git/ directory).

{
    "sources": {
        "deno-std": "https://github.com/denoland/deno_std"
    }
}

Development

# Type check
deno check **/*.ts

# Lint
deno lint

# Format
deno fmt

# Tests
deno test --allow-all

License

MIT — see LICENSE.

About

Workspace toolkit for managing dev sources, secrets, environment profiles, and SSH keys.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors