Almacenamiento de objetosque muestra sus cuentas.
Lockwell es un almacén de objetos privado y cifrado, con API compatible con S3, API JSON nativa y SDKs oficiales para Go, Node y Java: un solo binario, sin segunda base de datos, sin pegamento. Las afirmaciones de esta página son mediciones, y el repositorio incluye las herramientas para repetirlas.
- recuperación tras crash, escrituras confirmadas intactas
- 16 s
- disco usado para los mismos bytes, vs MinIO
- 0.54x
- PUT multiparte, 64 MiB con 64 clientes
- 2.2x MinIO
- suite de producción S3, 24 clientes SDK
- 0 fallos
- buckets públicos, lecturas anónimas
- rechazado
medido el 2026-06-11 · una máquina, Docker Compose · metodología · reproducir: make bench · make prod-authority-test
Cada petición pasa por la puerta
Este es el modelo de seguridad completo en una escena. Una petición que presenta una clave de tenant pasa, y su objeto queda sellado y cifrado en reposo. Una petición sin clave se rechaza con 401. No existe un camino anónimo que configurar con cuidado: no existe.
carries a tenant key: passes, sealed at rest sin clave: rechazado en la puerta, 401
Compartir sigue funcionando, por el camino seguro: se genera un enlace firmado con caducidad (una descarga de 7 días para un cliente, una subida de una hora desde el navegador) y se entrega. El enlace lleva el permiso, nadie recibe claves, y caduca solo.
El argumento para sustituir un MinIO que funciona
Los benchmarks no mueven un sistema en producción; facturas más bajas, menos piezas móviles y una salida segura, sí. Esto es lo que cambia el día del cambio, y la forma honesta de comprobarlo sin arriesgar nada.
Los mismos bytes, cerca de la mitad del disco
Medido: 0,54x el disco de MinIO para un conjunto de escritura idéntico, antes incluso de que la deduplicación trabaje sobre datos reales. El almacenamiento es la partida que solo crece; esto reduce su pendiente a la mitad.
Multi-tenancy que no hay que construir
Aislamiento por cliente, claves con alcance, cuotas y auditoría son trabajo del servidor, no una capa de autenticación que tu equipo escribe alrededor de un bucket y mantiene durante años.
Cumplimiento incluido
Cifrado en reposo siempre activo, retención y legal hold con Object Lock, auditoría, verificación y reparación, y ensayos de backup y restauración. La evidencia que pide el auditor es la salida normal del producto.
Un binario que operar
Sin base de datos externa, sin broker, sin caché que alimentar. Actualizar es sustituir un binario; la recuperación es un ensayo que corre en CI, no una página de wiki sin probar.
La salida es estándar
Habla S3, así que irse es un aws s3 sync. Un sistema de almacenamiento del que es fácil salir es el único al que vale la pena entrar.
Mantén MinIO en marcha. Audita el cambio primero.
El planificador de migración lee tu MinIO u otro almacén compatible con S3 y rechaza funciones bloqueadas en lugar de dejarlas caer en silencio. Ejecuta Lockwell junto a producción, copia con verificación y checkpoints, y cambia solo cuando su propio libro mayor te haya convencido.
Lo que los equipos ejecutan aquí de verdad
Tres formas concretas, no personas. Cada una es un tenant, unas pocas claves con alcance y partes del servidor que ya existen.
Entregas a clientes con enlaces que caducan
Una agencia mantiene a cada cliente en su propio tenant. Las entregas se comparten con enlaces firmados que mueren a los siete días: sin cuentas de cliente, sin bucket público, y la auditoría registra cada descarga.
URLs firmadas →Archivos de usuarios en un SaaS multi-tenant
Cada cliente es un tenant. Los navegadores suben directo al almacenamiento con URLs PUT firmadas, los webhooks disparan el pipeline de miniaturas, y una clave filtrada solo puede ver el mundo de un tenant.
El app kit →El archivo que visitará un auditor
Facturas y registros entran bajo retención de Object Lock con cifrado siempre activo. El ciclo de vida expira lo que puede expirar, el legal hold congela lo que no, y el ensayo de restauración demuestra que las copias son reales.
Object Lock →Míralo funcionar y luego revisa las cuentas
La terminal repite el ciclo de vida real contra la superficie real de la CLI. Las barras salen de la evidencia de benchmark registrada, y la herramienta viene en el repositorio, así que cada número puede repetirse en tu propio hardware.
Todo lo que necesita la capa de almacenamiento de una app
Aprovisionamiento, subidas firmadas, cifrado, soporte edge y webhooks, todo en un servidor y un SDK. No coses un bucket, una cola, un firmador y un almacén de secretos.
Aprovisionamiento multi-tenant
Garantiza que un tenant exista y emite una clave nueva con alcance en una sola llamada: lectura/escritura/borrado, alcance opcional por bucket, secreto mostrado una sola vez. Cada tenant queda aislado por defecto.
APIs nativa + S3 + admin
Un plano de datos JSON nativo, compatibilidad S3 SigV4 y una API de administración JSON. Tres superficies sobre un servidor, alcanzadas desde un SDK. Habla con el almacenamiento como prefiera tu stack.
URLs firmadas para el navegador
Firma una URL de subida o descarga en el servidor y entrégala directamente al navegador. La API nativa firma URLs de escritura, no solo GET, así que los bytes nunca pasan por tu app.
Listo para el edge
Los clientes nativo y kit no importan nada de node:*, así que corren en Cloudflare Workers, Vercel Edge, Bun y Deno mediante una entrada /edge dedicada, sin node:crypto.
Cifrado siempre activo
El cifrado autenticado en reposo viene activado por defecto: AES-256-GCM o XChaCha20-Poly1305 sobre los datos, con claves por tenant. No hay flag que olvidar.
Webhooks verificables
Las notificaciones de bucket hacen POST a tu endpoint con firma HMAC-SHA256 de tiempo constante. verifyWebhook valida la firma en una llamada, y corre en el edge.
Tres APIs sobre el mismo almacén cifrado
Lockwell expone el mismo almacén de objetos multi-tenant y cifrado a través de tres interfaces. Elige la que encaje, o mézclalas libremente.
Encaja donde ya está S3
Autenticación SigV4, direccionamiento path-style y virtual-host, versiones, multiparte, escrituras condicionales, URLs prefirmadas, Object Lock, etiquetas y ciclo de vida. El libro de paridad documenta cada operación, y lo que queda fuera falla cerrado en lugar de fingir.
Habla con el almacenamiento en nativo
Un plano de datos JSON en el listener público, sin firma SigV4 y sin XML. Los tokens bearer se emiten a partir de las claves de acceso y se renuevan por ti. Las URLs firmadas nativas cubren GET y PUT.
Aprovisionar y gestionar
Una API de administración JSON autenticada por bearer en un listener privado: tenants, claves con alcance, RBAC, auditoría y un documento OpenAPI. El aprovisionamiento vive fuera del plano de datos, por diseño.
Sin capa de almacenamiento propia que mantener
La pila habitual es un bucket, una segunda base para metadatos, un servicio de firmas, un verificador de webhooks y el pegamento que los une. Lockwell colapsa eso en un servidor y un SDK: aprovisionar un tenant, obtener un cliente con alcance, firmar una subida de navegador y verificar el webhook, de punta a punta, en la misma biblioteca, sobre el mismo almacén cifrado.
import { LockwellKit } from '@kelphect/sdk';
const kit = new LockwellKit({
admin: { endpoint: 'https://admin.example.com', token } },
native: { endpoint: 'https://objects.example.com' },
});
// 1. provision a tenant + mint a fresh scoped key
const { key } = await kit.provisionTenant('acme', {
defaultBucket: 'inbox',
});
// 2. sign a browser upload, then hand the URL to the client
const client = kit.clientForTenant('acme', key);
const up = await kit.signedUploadUrl(client, 'inbox', 'photo.jpg', {
ttl: 300, contentType: 'image/jpeg',
});
Lo que aún no existe, y qué hacer mientras tanto
Una función entra cuando pasa las mismas puertas de release que pasó todo lo demás: ensayos, suites, comportamiento documentado. Hasta entonces el servidor dice no, y esta página lo dice en voz alta.
Replicación multi-nodo
Lockwell es deliberadamente single-node hoy; el perfil replicado queda suspendido hasta pasar los mismos ensayos de takeover y durabilidad. Mientras tanto hay equipos con standby templado: una segunda instancia alimentada por sync S3 programado, con ensayos de restauración probando la costura.
Buses de eventos (SNS, SQS, Lambda)
Las notificaciones se entregan a webhooks firmados, verificables en una llamada. Una cola entre Lockwell y tu pipeline está a un consumidor de distancia, sobre infraestructura en la que ya confías.
Tiering de almacenamiento
Las reglas de ciclo de vida ya expiran y limpian; archivar en frío es un job programado que copia vía API S3 al almacén frío que prefieran tus facturas.