commit 07767e111172196b44237361df21e8e8245e5b9f Author: James Date: Sun Mar 1 06:00:28 2026 -0500 init: vault1984 marketing website (split from vault1984 binary) diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 0000000..92d2303 --- /dev/null +++ b/favicon.svg @@ -0,0 +1,5 @@ + + + v + 84 + diff --git a/hosted.html b/hosted.html new file mode 100644 index 0000000..c1a7d79 --- /dev/null +++ b/hosted.html @@ -0,0 +1,476 @@ + + + + + + vault1984 — Hosted + + + + + + + + + + +
+
+

vault1984 Hosted

+

We run it. You own it. Your L2 keys never leave your device.

+
+ + +
+
+

Your vault. Deployed close to you.

+

Hosted on Hostkey TIER III infrastructure. Pick your region at signup.

+

Or run it yourself. We embrace that too. No account, no payment, no questions asked.

+ +
+

The security model

+

Location is latency. Not security.

+

+ Your L2 encryption key is derived client-side from your Touch ID or security key. It never leaves your device. Our servers store ciphertext they cannot decrypt — regardless of who owns the rack, the building, or the country it sits in. +

+

+ Pick your region for speed. Pick it for compliance if your organisation requires it. But your private fields are safe in any of them. +

+
+ +
+ + + + + + + + + + + + + Virginia + + + + + + + + + + + + Zürich + + + + + + + + + + Beijing + + + + + + + + + + Sydney + +
+ + +
+
+
🇺🇸
+
Virginia
+
US East
+
Live
+
+
+
🇨🇭
+
Zürich
+
EU Central
+
Live
+
+
+
🇨🇳
+
Beijing
+
Asia Pacific
+
Live
+
+
+
🇦🇺
+
Sydney
+
Asia Pacific South
+
Live
+
+
+ +
+
+ + +
+
+

Your agent and you — same vault, right access

+

Four ways in. Each one designed for a different context. All pointing at the same encrypted store.

+
+
+
MCP
+
For AI agents
+

Claude, GPT, or any MCP-compatible agent can search credentials, fetch API keys, and generate 2FA codes — scoped to exactly what you allow.

+
+
+
Extension
+
For humans in a browser
+

Autofill passwords, generate 2FA codes inline, and unlock L2 fields with Touch ID — without leaving the page you're on.

+
+
+
CLI
+
For terminal workflows
+

Pipe credentials directly into scripts and CI pipelines. vault get github.token — done.

+
+
+
API
+
For everything else
+

REST API with scoped tokens. Give your deployment pipeline read access to staging keys. Nothing else.

+
+
+ +
+ +
+ + + +
+
+
+

The competition

+

We listened. And addressed them all.

+

Real complaints from real users — about 1Password, Bitwarden, and LastPass. Pulled from forums, GitHub issues, and Hacker News. Not cherry-picked from our own users.

+
+ + +
+ +
+

1PASSWORD — Community Forum

+

"The web extensions are laughably bad at this point. This has been going on for months. They either won't fill, wont' unlock, or just plain won't do anything (even clicking extension icon). It's so bad"

+ — notnotjake, April 2024 ↗ +
+

✓ vault1984: No desktop app dependency. The extension talks directly to the local vault binary — no IPC, no sync, no unlock chains.

+
+
+ +
+

BITWARDEN — GitHub Issues

+

"Every single website loads slower. From Google, up to social media websites like Reddit, Instagram, X up to websites like example.com. Even scrolling and animation stutters sometimes. javascript heavy websites like X, Instagram, Reddit etc. become extremely sluggish when interacting with buttons. So for me the Bitwarden browser extension is unusable. It interferes with my browsing experience like malware."

+ — julianw1011, 2024 ↗ +
+

✓ vault1984: Zero content scripts. The extension injects nothing into pages — it fills via the browser autofill API only when you ask.

+
+
+ +
+

LASTPASS — Hacker News

+

"The fact they're drip-feeding how bad this breach actually was is terrible enough... Personally I'm never touching them again."

+ — intunderflow, January 2023 ↗ +
+

✓ vault1984: Self-host or use hosted with L2 encryption — we mathematically cannot read your private fields. No vault data to breach.

+
+
+ +
+

1PASSWORD — Community Forum

+

"Since doing so, it asks me to enter my password every 10 minutes or so in the chrome extension"

+ — Anonymous (Former Member), November 2022 ↗ +
+

✓ vault1984: WebAuthn-first. Touch ID is the primary unlock. Session lives locally — no server-side expiry forcing re-auth.

+
+
+ +
+

BITWARDEN — Community Forums

+

"the password not only auto-filled in the password field, but also auto-filled in reddit's search box!"

+

"if autofill has the propensity at times to put an entire password in plain text in a random field, autofill seems like more risk than it's worth."

+ — xru1nib5 ↗ +
+

✓ vault1984: LLM field mapping. The extension reads the form, asks the model which field is which — fills by intent, not by CSS selector.

+
+
+ +
+

BITWARDEN — Community Forums

+

"Bitwarden REFUSES to autofill the actual password saved for a given site or app...and instead fills an old password. It simply substitutes the OLD password for the new one that is plainly saved in the vault."

+ — gentlezacharias ↗ +
+

✓ vault1984: LLM field mapping matches by intent. Entries are indexed by URL — the right credential for the right site, every time.

+
+
+ +
+ +

All quotes verbatim from public posts. URLs verified. View sources →

+
+
+ + +
+
+

Pricing

+

No tiers. No per-seat. No "contact sales." Two options.

+
+ +
+

Self-hosted

+
Free
+

Forever. MIT license.

+

One binary, your machine, your data. Full source on GitHub.

+
    +
  • + + All features included +
  • +
  • + + L1/L2 encryption +
  • +
  • + + MCP server +
  • +
  • + + Browser extension +
  • +
  • + + Unlimited entries +
  • +
+ Self-host guide → +
+ + +
+
Recommended
+

Hosted

+
$12/year
+

We manage it. You use it.

+

New York, Amsterdam, Frankfurt, Helsinki. Pick your region.

+
    +
  • + + Everything in self-hosted +
  • +
  • + + Managed backups +
  • +
  • + + Multi-region deployment +
  • +
  • + + Uptime monitoring +
  • +
  • + + Automatic updates +
  • +
+ Get started — $12/yr +
+
+ +
+ + +
+ + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..272387a --- /dev/null +++ b/index.html @@ -0,0 +1,638 @@ + + + + + + vault1984 — AI-native password manager with field-level encryption + + + + + + + + + + + + + + + +
+
+
+
+

George Orwell — 1984

+

+ "If you want to keep a secret, you must also hide it from yourself." +

+

+ We did. Your L2 key is derived in your browser from your Touch ID. Our servers have never seen it. They could not decrypt your private fields even if they wanted to. Or anybody else. +

+ +
+ + +
+ + + + + + AI Agent + You only + + + + + + + + + + + + + L1 — AI can read + + + + + github_token + + + + + + ssh_key + + + + + + totp_github + + + + + + oauth_slack + + + + + + + + L2 — you only + + + + + credit_card + + + + + + cvv + + + + + + passport + + + + + + ssn + + + + + + + + + +
+
+ +
+ + +
+ + +
+
+

The problem

+

Every password manager was built before AI agents existed. Now they need to catch up.

+
+
+
+ +
+

All-or-nothing is broken

+

All others give your AI agent access to everything in your vault, or nothing at all. There's no middle ground. Your AI needs your GitHub token — it shouldn't also see your passport number.

+
+
+
+ +
+

Policy isn't security

+

"AI-safe" vaults still decrypt everything server-side. They rely on access policies that can be overridden, misconfigured, or bypassed. If the server can read it, it's not truly private.

+
+
+
+ +
+

Agents need credentials — and 2FA codes

+

Your AI can't log in to a service, get past two-factor authentication, or rotate API keys without credential access. vault1984 lets it do all three — without exposing your credit card or passport to the same pipeline.

+
+
+ +
+ + +
+
+
+

How it works

+
+ "Your assistant can book your flights.
+ Not read your diary." +
+

Your passwords are stored on the vault server — yours to self-host, or ours to run. Every field is encrypted. But some fields get a second lock. That second key is derived from your fingerprint and only exists in your browser. The server holds the safe. Only you hold that key.

+
+ +
+ +
+
+ L1 + AI-readable +
+

Encrypted at rest, decryptable by the vault server. Your AI agent reads these via MCP.

+
    +
  • + + API keys & tokens +
  • +
  • + + SSH keys +
  • +
  • + + TOTP 2FA codes — AI generates them for you (no more copy-paste from your phone) +
  • +
  • + + OAuth tokens +
  • +
+
+ + +
+
+ L2 + Touch ID only +
+

Encrypted client-side with WebAuthn PRF. The server never sees the plaintext. Ever.

+
    +
  • + + Credit card numbers +
  • +
  • + + CVV +
  • +
  • + + Passport & SSN +
  • +
  • + + Private signing keys +
  • +
+
+
+ +
+ + +
+ + +
+
+

Built different

+

Not another password manager with an AI checkbox. The architecture is the feature.

+
+
+
+ +
+

Field-level AI visibility

+

Each field in an entry has its own encryption tier. Your AI reads the username, not the CVV. Same entry, different access.

+
+
+
+ +
+

WebAuthn PRF

+

L2 encryption uses WebAuthn PRF — a cryptographic key derived from your biometric hardware. Math, not policy. The server literally cannot decrypt it.

+
+
+
+ +
+

AI-powered 2FA

+

Store TOTP secrets as L1 fields. Your AI agent generates time-based codes on demand via MCP — no more switching to your authenticator app.

+
+
+
+ +
+

Scoped MCP tokens

+

Create separate MCP tokens per agent or integration. Each token sees only its designated entries. Compromise one, the rest stay clean.

+
+
+
+ +
+

One binary, one file

+

No Docker. No Postgres. No Redis. One Go binary, one SQLite file. Runs on a Raspberry Pi. Runs on a VPS. Runs on your laptop.

+
+
+
+ +
+

LLM field mapping

+

Import from any password manager and the built-in LLM automatically classifies which fields should be L1 (AI-visible) vs L2 (private).

+
+
+ +
+ + +
+ + +
+
+
+
+

+ 10 agents.
+ Each gets exactly what it needs. +

+

Create scoped MCP tokens per agent. One compromised agent exposes one agent's scope — not your entire vault.

+
+
~/.claude/mcp.json
+
{
+  "mcpServers": {
+    "vault-dev": {
+      "url": "http://localhost:1984/mcp",
+      "headers": {
+        "Authorization": "Bearer mcp_dev_a3f8..."
+      }
+    },
+    "vault-social": {
+      "url": "http://localhost:1984/mcp",
+      "headers": {
+        "Authorization": "Bearer mcp_social_7b2e..."
+      }
+    }
+  }
+}
+
+
+ + +
+ + + + vault + 1984 + + + + Agent 1 + dev + + + + + Agent 2 + social + + + + + Agent 3 + finance + + + + + Agent 4 + infra + + + + + Agent 5 + deploy + + + + + github ssh gitlab + + + twitter slack discord + + + stripe plaid + + + aws k8s docker + + + vercel netlify + +
+
+ +
+ + +
+ + +
+
+

Don't want to run it yourself?

+

We host vault1984 on TIER III infrastructure across four regions. $12/year. Pick your region at signup.

+

Your L2 keys are derived in your browser. We mathematically cannot read your private fields.

+ +
+
+ + + +
+
+

Up and running in 30 seconds

+

One command. No dependencies.

+ +
+
+
Terminal
+
+
# Self-host in 30 seconds
+
$ curl -fsSL vault1984.com/install.sh | sh
+
$ vault1984
+
# Running on http://localhost:1984
+
+
+ +
+
MCP config for Claude Code / Cursor / Codex
+
{
+  "mcpServers": {
+    "vault1984": {
+      "url": "http://localhost:1984/mcp",
+      "headers": {
+        "Authorization": "Bearer mcp_your_token_here"
+      }
+    }
+  }
+}
+
+
+ + + +
+ + +
+ + + + + + + + + diff --git a/install.html b/install.html new file mode 100644 index 0000000..8c83315 --- /dev/null +++ b/install.html @@ -0,0 +1,256 @@ + + + + + + Install — Vault1984 + + + + + + + + + + + + + + +
+
+

Self-host Vault1984

+

One binary. No Docker. No Postgres. No Redis. Runs anywhere Go runs.

+
+
+ + +
+
+ + +
+
+ 1 +

Download the binary

+
+

The install script detects your OS and architecture, downloads the latest release, and puts it in your PATH.

+
+
$ curl -fsSL vault1984.com/install.sh | sh
+
+

Or download a binary directly:

+ +
+ + +
+
+ 2 +

Set your vault key

+
+

The vault key encrypts your L1 data at rest. Set it as an environment variable. If you lose this key, L1 data cannot be recovered.

+
+
# Generate a random key
+
$ export VAULT_KEY=$(openssl rand -hex 32)
+
# Save it somewhere safe (not in your vault...)
+
$ echo $VAULT_KEY >> ~/.vault1984-key
+
+
+ + +
+
+ 3 +

Run it

+
+

That's it. The vault server starts on port 1984. A SQLite database is created automatically.

+
+
$ vault1984
+
Vault1984 running on http://localhost:1984
+
Database: ~/.vault1984/vault.db
+
+
+ + +
+
+ 4 +

Configure MCP

+
+

Point your AI assistant at the vault. Works with Claude Code, Cursor, Codex, or any MCP-compatible client.

+ +
+
+
Claude Code (~/.claude/mcp.json)
+
+
{
+  "mcpServers": {
+    "vault1984": {
+      "url": "http://localhost:1984/mcp",
+      "headers": {
+        "Authorization": "Bearer YOUR_MCP_TOKEN"
+      }
+    }
+  }
+}
+
+
+ +
+
Cursor (.cursor/mcp.json)
+
+
{
+  "mcpServers": {
+    "vault1984": {
+      "url": "http://localhost:1984/mcp",
+      "headers": {
+        "Authorization": "Bearer YOUR_MCP_TOKEN"
+      }
+    }
+  }
+}
+
+
+
+ +

Generate an MCP token from the web UI at http://localhost:1984 after first run.

+
+ + +
+
+ 5 +

Import your passwords

+
+

Export from your current password manager, then import. The LLM classifier automatically suggests L1/L2 assignments for each field.

+
+
# Chrome CSV export
+
$ vault1984 import --format chrome passwords.csv
+
# Firefox CSV export
+
$ vault1984 import --format firefox logins.csv
+
# Bitwarden JSON export
+
$ vault1984 import --format bitwarden bitwarden-export.json
+
# Proton Pass JSON export
+
$ vault1984 import --format protonpass protonpass-export.json
+
# 1Password export
+
$ vault1984 import --format 1password 1password-export.json
+
+

Review the L1/L2 classification in the web UI before confirming. You can override any field's tier.

+
+ + +
+

Running as a service (optional)

+

For always-on availability, run Vault1984 as a systemd service.

+
+
/etc/systemd/system/vault1984.service
+
[Unit]
+Description=Vault1984
+After=network.target
+
+[Service]
+Type=simple
+User=vault1984
+EnvironmentFile=/etc/vault1984/env
+ExecStart=/usr/local/bin/vault1984
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+
+
+
$ sudo systemctl enable --now vault1984
+
+
+ + +
+

Exposing to the internet (optional)

+

Put Vault1984 behind a reverse proxy for TLS and remote access.

+
+
Caddyfile
+
vault.yourdomain.com {
+    reverse_proxy localhost:1984
+}
+
+

Caddy handles TLS automatically via Let's Encrypt. Nginx and Traefik work too.

+
+
+
+ + + + + + + diff --git a/pricing.html b/pricing.html new file mode 100644 index 0000000..94454a8 --- /dev/null +++ b/pricing.html @@ -0,0 +1,238 @@ + + + + + + Pricing — Vault1984 + + + + + + + + + + + + + + +
+
+

Pricing

+

No tiers. No per-seat. No "contact sales." Two options — both get every feature.

+
+
+ + +
+
+ +
+

Self-hosted

+
Free
+

Forever. MIT license. No strings.

+ + Self-host guide → + +
What you get
+
    +
  • + + L1/L2 field-level encryption +
  • +
  • + + WebAuthn PRF (L2 biometric encryption) +
  • +
  • + + MCP server for AI agents +
  • +
  • + + Scoped MCP tokens (multi-agent) +
  • +
  • + + TOTP generation via MCP +
  • +
  • + + Browser extension (Chrome, Firefox) +
  • +
  • + + Import from Bitwarden / 1Password +
  • +
  • + + LLM-powered field classification +
  • +
  • + + Passphrase & password generator +
  • +
  • + + REST API +
  • +
  • + + Unlimited entries +
  • +
  • + + Full source code (MIT) +
  • +
+
+ + +
+
Recommended
+

Hosted

+
$12/year
+

That's $1/month. Less than a coffee.

+ + Get started + +
Everything in self-hosted, plus
+
    +
  • + + Managed infrastructure +
  • +
  • + + Daily encrypted backups +
  • +
  • + + Multi-region: New York, Amsterdam, Frankfurt, Helsinki +
  • +
  • + + Uptime monitoring & alerting +
  • +
  • + + Automatic updates & patches +
  • +
  • + + TLS included (vault1984.com subdomain) +
  • +
  • + + Custom domain support +
  • +
  • + + Email support +
  • +
+
+
+
+ + +
+
+

Common questions

+
+
+

Why $12/year?

+

Because a password manager isn't a luxury product. $12 covers compute, backups, and bandwidth for one user for a year. We're not trying to extract maximum revenue — we're trying to cover costs and keep the lights on.

+
+
+

Is the self-hosted version missing any features?

+

No. Every feature ships in both versions. The hosted version adds managed infrastructure, backups, and multi-region — things that are hard to do yourself but have nothing to do with the vault's functionality.

+
+
+

Is there an SLA?

+

Not at $12/year. We aim for high uptime but don't make contractual guarantees at this price point. If you need an SLA, self-host — then uptime is in your hands.

+
+
+

Can I switch between hosted and self-hosted?

+

Yes. Export your vault at any time as encrypted JSON. Import it into a self-hosted instance, or vice versa. Your data is always portable.

+
+
+

Can hosted Vault1984 read my L2 data?

+

No. L2 fields are encrypted client-side with WebAuthn PRF. The server stores ciphertext it cannot decrypt. This isn't a policy decision — it's a mathematical impossibility. We don't have the key.

+
+
+
+
+ + + + + + + diff --git a/privacy.html b/privacy.html new file mode 100644 index 0000000..5a2d846 --- /dev/null +++ b/privacy.html @@ -0,0 +1,193 @@ + + + + + + Privacy Policy — Vault1984 + + + + + + + + + + + + + + +
+
+

Privacy Policy

+

Last updated: February 2026

+ +
+ +
+

The short version

+
    +
  • + + Your vault data is encrypted at rest (L1) and in transit (TLS). +
  • +
  • + + L2 data is encrypted client-side with WebAuthn PRF. We cannot decrypt it. Ever. +
  • +
  • + + No analytics. No tracking pixels. No third-party scripts. +
  • +
  • + + We don't sell, share, or rent your data. To anyone. For any reason. +
  • +
  • + + You can delete your account and all data at any time. +
  • +
+
+ +
+

What this policy covers

+

This privacy policy applies to the hosted Vault1984 service at vault1984.com. If you self-host Vault1984, your data never touches our servers and this policy doesn't apply to you — your privacy is entirely in your own hands.

+
+ +
+

Data we store

+

When you use hosted Vault1984, we store:

+
    +
  • Account information: email address and authentication credentials
  • +
  • L1 vault data: encrypted at rest with AES-256-GCM using your vault key
  • +
  • L2 vault data: encrypted client-side with WebAuthn PRF before reaching our servers — stored as ciphertext we cannot decrypt
  • +
  • Metadata: entry creation and modification timestamps, entry titles (L1)
  • +
+
+ +
+

Data we don't store

+
    +
  • IP address logs (not stored beyond immediate request processing)
  • +
  • Usage analytics or telemetry
  • +
  • Browser fingerprints
  • +
  • Cookies beyond session authentication
  • +
+
+ +
+

L2 encryption guarantee

+

Fields marked as L2 are encrypted in your browser using a key derived from your WebAuthn authenticator (Touch ID, Windows Hello, or a hardware security key) via the PRF extension. The encryption key never leaves your device. Our servers store only the resulting ciphertext. We cannot decrypt L2 fields, and no future policy change, acquisition, or legal order can change this — the mathematical reality is that we don't have the key.

+
+ +
+

Data residency

+

When you create a hosted vault, you choose a region. All infrastructure is Hostkey TIER III.

+
    +
  • US East (New York) — data stored in the United States
  • +
  • EU West (Amsterdam) — data stored in the European Union
  • +
  • EU Central (Frankfurt) — data stored in the European Union
  • +
  • EU North (Helsinki) — data stored in the European Union (coming soon)
  • +
+

EU data stays on EU servers. US data stays on US servers. We don't replicate across regions unless you explicitly request it.

+
+ +
+

Third parties

+

We use infrastructure providers (cloud hosting, DNS) to run the service. These providers process encrypted data in transit but do not have access to your vault contents. We do not use any analytics services, advertising networks, or data brokers.

+
+ +
+

Law enforcement

+

If compelled by valid legal process, we can only provide: your email address, account creation date, and encrypted vault data. L1 data is encrypted with your vault key (which we do not store). L2 data is encrypted client-side. In practice, we have very little useful information to provide.

+
+ +
+

Account deletion

+

You can delete your account and all associated data at any time from the web interface. Deletion is immediate and irreversible. Backups containing your data are rotated out within 30 days.

+
+ +
+

Changes to this policy

+

We'll notify registered users by email before making material changes to this policy. The current version is always available at this URL.

+
+ +
+

Contact

+

Questions about this policy? Email privacy@vault1984.com.

+
+
+
+
+ + + + + + + diff --git a/sources.html b/sources.html new file mode 100644 index 0000000..8a4caea --- /dev/null +++ b/sources.html @@ -0,0 +1,146 @@ + + + + + + vault1984 — Sources + + + + + + + + + + +
+
+ ← Back to Hosted +

Sources

+

All complaint quotes used on the Hosted page are verbatim from public posts. Every URL was verified at time of collection. Nothing was cherry-picked from vault1984 users.

+
+ +
+ +
+

1Password

+
+
+

USED ON PAGE

+

"The web extensions are laughably bad at this point. This has been going on for months. They either won't fill, wont' unlock, or just plain won't do anything (even clicking extension icon). It's so bad"

+
+
Author
notnotjake
+
Date
April 25, 2024
+ +
+
+
+

USED ON PAGE

+

"Since doing so, it asks me to enter my password every 10 minutes or so in the chrome extension"

+
+
Author
Anonymous (Former Member)
+
Date
November 28, 2022
+ +
+
+
+

COLLECTED — not used on page

+

"When I open the extension it gets stuck on this loading screen below for about 10-15 before it reveals the password field." / "This has been going on for me on a brand new mac with everything up to date for the last 2 months."

+
+
Authors
Anonymous (Former Member); JoshuaKleckner
+ +
+
+
+

COLLECTED — not used on page

+

"My Google Chrome Extension won't autofill login info at websites, and when I click on the Extension 'Pin' at the top of the screen, it crashes"

+
+
Author
bd909
+
Date
July 15, 2025
+ +
+
+
+
+ +
+

Bitwarden

+
+
+

USED ON PAGE

+

"Every single website loads slower... It interferes with my browsing experience like malware."

+
+
Author
julianw1011
+
Date
2024
+ +
+
+
+

USED ON PAGE

+

"the password not only auto-filled in the password field, but also auto-filled in reddit's search box!"

+
+
Author
xru1nib5
+ +
+
+
+

USED ON PAGE

+

"Bitwarden REFUSES to autofill the actual password saved for a given site or app...and instead fills an old password."

+
+
Author
gentlezacharias
+ +
+
+
+
+ +
+

LastPass

+
+
+

USED ON PAGE

+

"The fact they're drip-feeding how bad this breach actually was is terrible enough... Personally I'm never touching them again."

+
+
Author
intunderflow
+
Date
January 2023
+ +
+
+
+
+ +
+

Methodology

+

Quotes were collected from public forums, GitHub Issues, and Hacker News in February 2026. Only verbatim user complaints were included — no paraphrasing, no vault1984 users, no invented content. Forum posts are publicly readable without authentication.

+
+ +
+
+ + + + diff --git a/tailwind.min.css b/tailwind.min.css new file mode 100644 index 0000000..4be7d66 --- /dev/null +++ b/tailwind.min.css @@ -0,0 +1 @@ +*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Inter,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]:where(:not([hidden=until-found])){display:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.-top-3{top:-.75rem}.right-6{right:1.5rem}.top-0{top:0}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-14{margin-bottom:3.5rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-16{height:4rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.columns-1{-moz-columns:1;column-count:1}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1\.5{gap:.375rem}.gap-16{gap:4rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2.5rem*var(--tw-space-y-reverse));margin-top:calc(2.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(3rem*var(--tw-space-y-reverse));margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-accent\/30{border-color:rgba(34,197,94,.3)}.border-danger\/30{border-color:rgba(239,68,68,.3)}.border-gray-600{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-green-500\/20{border-color:rgba(34,197,94,.2)}.border-red-500\/10{border-color:rgba(239,68,68,.1)}.border-red-500\/20{border-color:rgba(239,68,68,.2)}.border-white\/5{border-color:hsla(0,0%,100%,.05)}.border-yellow-600\/30{border-color:rgba(202,138,4,.3)}.bg-accent{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-accent\/10{background-color:rgba(34,197,94,.1)}.bg-accent\/5{background-color:rgba(34,197,94,.05)}.bg-danger\/10{background-color:rgba(239,68,68,.1)}.bg-danger\/5{background-color:rgba(239,68,68,.05)}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-green-500\/5{background-color:rgba(34,197,94,.05)}.bg-navy{--tw-bg-opacity:1;background-color:rgb(10 22 40/var(--tw-bg-opacity,1))}.bg-navy-light{--tw-bg-opacity:1;background-color:rgb(17 31 56/var(--tw-bg-opacity,1))}.bg-navy-light\/50{background-color:rgba(17,31,56,.5)}.bg-navy\/80{background-color:rgba(10,22,40,.8)}.bg-navy\/95{background-color:rgba(10,22,40,.95)}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-20{padding-bottom:5rem;padding-top:5rem}.py-24{padding-bottom:6rem;padding-top:6rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pb-12{padding-bottom:3rem}.pb-20{padding-bottom:5rem}.pt-12{padding-top:3rem}.pt-32{padding-top:8rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:JetBrains Mono,monospace}.font-sans{font-family:Inter,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-danger{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-75{opacity:.75}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\:border-accent:hover{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.hover\:border-gray-400:hover{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.hover\:bg-accent-hover:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:text-accent:hover{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.hover\:text-gray-400:hover{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:768px){.md\:flex{display:flex}.md\:hidden{display:none}.md\:columns-2{-moz-columns:2;column-count:2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}}@media (min-width:1024px){.lg\:columns-3{-moz-columns:3;column-count:3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-\[3\.25rem\]{font-size:3.25rem}} \ No newline at end of file diff --git a/terms.html b/terms.html new file mode 100644 index 0000000..0297100 --- /dev/null +++ b/terms.html @@ -0,0 +1,176 @@ + + + + + + Terms of Service — Vault1984 + + + + + + + + + + + + + + +
+
+

Terms of Service

+

Last updated: February 2026

+ +
+ +
+

Agreement

+

By using the hosted Vault1984 service ("Service"), you agree to these terms. If you self-host Vault1984 using the open-source software, these terms don't apply to you — the MIT license governs your use of the software.

+
+ +
+

The service

+

Vault1984 is a password manager with field-level two-tier encryption. We provide a hosted version of the open-source Vault1984 server, including managed infrastructure, backups, and updates. The Service is provided on a subscription basis at $12 per year.

+
+ +
+

Your account

+

You are responsible for maintaining the security of your account credentials and vault key. If you lose your vault key, we cannot recover your L1 data. If you lose access to your WebAuthn authenticator, we cannot recover your L2 data. We are not liable for data loss resulting from lost credentials.

+
+ +
+

Your data

+

Your vault data belongs to you. We do not claim any ownership or license over the contents of your vault. You can export your data at any time. You can delete your account and all associated data at any time.

+
+ +
+

Acceptable use

+

You agree not to use the Service to:

+
    +
  • Store or distribute malware
  • +
  • Facilitate illegal activities
  • +
  • Abuse, overload, or interfere with the infrastructure
  • +
  • Resell access without authorization
  • +
+

We reserve the right to suspend accounts that violate these terms.

+
+ +
+

Payment and billing

+

The Service costs $12 per year, billed annually. Prices may change with 30 days' notice. Refunds are available within 30 days of purchase if you're not satisfied. After that, your subscription runs until the end of the billing period.

+
+ +
+

Availability

+

We aim for high availability but don't provide a formal SLA at this price point. The Service may experience downtime for maintenance, updates, or unforeseen issues. We'll make reasonable efforts to notify users of planned downtime in advance. For guaranteed uptime, consider self-hosting.

+
+ +
+

Backups

+

We perform daily encrypted backups of all hosted vaults. Backups are retained for 30 days. While we take reasonable precautions, we recommend keeping your own exports as an additional safeguard.

+
+ +
+

Limitation of liability

+

The Service is provided "as is" without warranty of any kind, express or implied. We are not liable for any indirect, incidental, special, consequential, or punitive damages, including loss of data, revenue, or profits. Our total liability is limited to the amount you paid for the Service in the 12 months preceding the claim.

+
+ +
+

Self-hosted software

+

The self-hosted Vault1984 software is released under the MIT License. It is provided "as is" without warranty of any kind. See the LICENSE file in the repository for full terms.

+
+ +
+

Termination

+

You can close your account at any time. We may terminate your access for violations of these terms with reasonable notice (except in cases of abuse, where immediate suspension may be necessary). Upon termination, your data is deleted per our privacy policy.

+
+ +
+

Changes to these terms

+

We may update these terms from time to time. Material changes will be communicated to registered users by email at least 30 days before they take effect. Continued use of the Service after changes take effect constitutes acceptance of the updated terms.

+
+ +
+

Governing law

+

These terms are governed by the laws of the State of Delaware, United States, without regard to conflict of law principles.

+
+ +
+

Contact

+

Questions about these terms? Email legal@vault1984.com.

+
+
+
+
+ + + + + + +