A web application for teams to organize and share authenticator codes through workspaces and vaults.
- PHP 8.4 or newer with SQLite and Sodium support.
- Composer 2.
- Node.js 20.19+ or 22.12+ with npm.
- Git.
Clone the repository and install its dependencies:
git clone <repository-url> shared-team-authenticator
cd shared-team-authenticator
composer install
npm ciCreate the local configuration and SQLite database.
On macOS or Linux:
cp .env.example .env
touch database/database.sqliteOn Windows Command Prompt:
copy .env.example .env
type nul > database\database.sqliteFinish the initial setup:
php artisan key:generate
php artisan vault:key
php artisan migrate
php artisan user:create-admin admin@example.com --workspace="My team"Start the application:
composer run devOpen http://127.0.0.1:8001/login and sign in with the account created above. Keep the
terminal open while using the application and press Ctrl+C to stop it.
To start the same installation again later, run:
composer run devYour local data is stored in database/database.sqlite, and the keys required
to read it are stored in .env. Stop the application and back up both files
together.
Never commit .env, regenerate its keys after saving data, or run
php artisan migrate:fresh on an installation you want to keep.
Back up your data, stop the application, and run:
git pull --ff-only
composer install
npm ci
php artisan migrate
composer run devcomposer test
npm test
npm run buildCreate database/database.sqlite and run:
php artisan migrateRun Laravel and Vite separately on another port:
php artisan serve --host=127.0.0.1 --port=8010npm run devThen open http://127.0.0.1:8010.
php artisan optimize:clearRestart the application afterward.
The local development server is only available from your computer. Publishing the application on a network or the internet requires a separate production deployment with HTTPS and a production web server.
See Deploy with Kamal for the repository-specific production configuration.
Built by the WideFix team for our own internal use, this tool helps teammates access shared accounts independently, without waiting for someone else to provide an authentication code. You’re welcome to use and adapt it for your own team under the MIT license.
After the container starts and migrations finish, run:
kamal app exec --interactive --reuse 'php artisan user:create-admin admin@example.com --workspace="My team"'
# Or, with Docker directly:
docker exec -it <container> php artisan user:create-admin admin@example.com --workspace="My team"The command prompts for a password and confirmation without echoing them. It only works on an installation with no users. Public signup is disabled; administrators invite additional members through workspace invitations.
Login is limited to 5 attempts per minute per email/IP pair, 20 per minute per IP, and 30 per hour per email across IPs. Limits use the configured shared cache.