Skip to content

appuo-in/orbit

Repository files navigation

Orbit

Orbit by AppUo

Switch Vercel identities instantly.

No logout. No shell hacks. No credential mess.

npm License: MIT Node.js


AWS has named profiles. Why doesn't Vercel?

Orbit gives Vercel the same power. More providers coming soon.

orbit add vercel personal
orbit add vercel company

orbit use vercel company
vercel deploy              # deploys as company. done.

orbit use vercel personal
vercel deploy              # deploys as personal. instant.

One command. Instant switch. No logout required.


🎯 Current Support

Provider Status
Vercel βœ… Fully supported
AWS πŸ”œ Coming soon
Supabase πŸ”œ Coming soon
Cloudflare πŸ”œ Coming soon

Orbit is built with a pluggable provider system. Vercel is the first provider, with more on the way.


πŸ“¦ Install

npm install -g @appuo/orbit
# or
pnpm add -g @appuo/orbit

🧾 Release & Changelog Flow

Use this flow to keep CHANGELOG.md updated on every change/release:

# 1) Add an entry while working
pnpm changelog:add -- --type changed --message "Improve profile auth rollback"

# 2) Bump version for release
npm version 1.0.9 --no-git-tag-version

# 3) Move [Unreleased] notes into the new version + validate
pnpm release:prepare

# 4) Publish to GitHub Packages
npm login --scope=@appuo --auth-type=legacy --registry=https://npm.pkg.github.com
pnpm release:publish

# One-command release (version bump + changelog + publish + commit/tag/push)
pnpm release:ship
# or explicit version:
pnpm release:ship -- --version 1.0.9
# run everything except git push:
pnpm release:ship -- --no-push

Optional npmjs publish:

pnpm release:publish:npm

pnpm changelog:release will fail if [Unreleased] has no entries, to prevent empty release notes.


⚑ 30-Second Setup

# Add your personal Vercel account
orbit add vercel personal
# β†’ Detects existing Vercel login automatically
# β†’ Or launches `vercel login` for you

# Add your work Vercel account
orbit add vercel company
# β†’ Say "n" to detected token, login as different user

# Switch instantly
orbit use vercel company
vercel deploy --prod       # deploys as company

orbit use vercel personal
vercel whoami              # shows personal account

No vercel logout. No vercel login. Just switch and go.


πŸ“– Commands

Command What it does
orbit add vercel <profile> Add Vercel account (guided login)
orbit use vercel <profile> Switch identity instantly
orbit list See all profiles + emails
orbit exec vercel <cmd> Run with active profile
orbit run vercel <profile> <cmd> Run with specific profile
orbit current Show active profile
orbit rotate-key Rotate local encryption key
orbit remove vercel <profile> Remove a profile

🧰 Global Flags

Flag Description
--json Machine-readable output for automation
--debug Redacted debug stack traces

πŸ”„ How It Works

When you run orbit use vercel company, Orbit:

  1. Snapshots your current profile's auth.json
  2. Restores the target profile's auth.json
  3. Done β€” native vercel commands just work

No environment variable injection. No wrappers. The Vercel CLI reads its own auth file natively.

~/.orbit/
β”œβ”€β”€ config.json              # Profile names + metadata (no secrets)
β”œβ”€β”€ credentials.json         # Encrypted tokens (AES-256-GCM)
β”œβ”€β”€ .key                     # Encryption key (chmod 600)
└── auth/
    └── vercel/
        β”œβ”€β”€ personal.json    # Auth snapshot
        └── company.json     # Auth snapshot

πŸ” Security

  • Tokens encrypted with AES-256-GCM at rest
  • Credentials key and token store enforced at chmod 600
  • Auth snapshots stored with chmod 600
  • Config and auth directories enforced at chmod 700
  • Corrupt config/credential files are quarantined before reset
  • No secrets in config files
  • No shell modifications (.bashrc, .zshrc)
  • Zero native dependencies

🧯 Failure Modes & Recovery

  • Missing auth snapshot during orbit use: command fails safely and does not change current profile.
  • Missing auth snapshot during orbit exec/orbit run: Orbit falls back to token-scoped env execution.
  • Corrupt config.json or credentials.json: file is moved to *.corrupt-<timestamp> and re-initialized.

See the full runbook in docs/TROUBLESHOOTING.md.


πŸ–₯️ Cross-Platform

macOS Linux Windows
Auth swap βœ… βœ… βœ…
Encrypted storage βœ… βœ… βœ…
CLI execution βœ… βœ… βœ…

πŸ—ΊοΈ Roadmap

Orbit is built on a pluggable provider architecture. Adding new cloud providers is straightforward.

Coming Soon:

  • AWS Provider β€” Named profiles for AWS CLI
  • Supabase Provider β€” Multi-project switching
  • Cloudflare Provider β€” Workers + Pages account switching
  • Railway Provider β€” Multi-team support
  • Netlify Provider β€” Account switching
  • Profile import/export β€” Migrate between machines
  • Shell completions β€” bash, zsh, fish, PowerShell

Want a provider? Open an issue β†’


πŸ› οΈ Development

git clone https://github.com/appuo/orbit.git
cd orbit && pnpm install
pnpm build
npm link
orbit --version

🀝 Contributing

See CONTRIBUTING.md.

πŸ“š Additional Docs

πŸ“„ License

MIT β€” see LICENSE.

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors