Initial commit: Elydora Open Source — self-hosted audit platform for AI agents

Full self-hosted port of the Elydora tamper-evident audit protocol:
- Hono API server with PostgreSQL, Redis, MinIO adapters
- Ed25519 signed operations, chain hashing, Merkle epoch rollups
- PBKDF2 password hashing, HMAC-SHA256 JWT, 5-role RBAC
- Next.js management console
- Node.js, Python, and Go SDKs
- Docker Compose for local deployment
- Helm chart for Kubernetes
- Comprehensive security hardening and audit fixes applied

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 4.6 committed 2026-03-02 13:41:42 -05:00
1 parent 15547a8c35
commit e390e68594
207 files changed
+32790 -63

No files matched your search

+390
View File
@@ -0,0 +1,390 @@
{
"common": {
"dashboard": "Dashboard",
"agents": "Agents",
"operations": "Operations",
"epochs": "Epochs",
"auditTrail": "Audit Trail",
"exports": "Exports",
"jwks": "JWKS",
"settings": "Settings",
"cancel": "Cancel",
"delete": "Delete",
"download": "Download",
"continue": "Continue",
"signOut": "Sign Out",
"copy": "Copy",
"copied": "Copied",
"clickToCopy": "Click to copy",
"viewAll": "View All",
"home": "Home",
"docs": "Docs",
"console": "Console",
"loading": "Loading...",
"unknownError": "Unknown error.",
"allData": "All data",
"copyToClipboard": "Copy to clipboard",
"copyJwks": "Copy JWKS",
"links": "LINKS"
},
"sidebar": {
"overview": "OVERVIEW",
"management": "MANAGEMENT",
"compliance": "COMPLIANCE",
"system": "SYSTEM"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Elydora accountability console overview",
"totalAgents": "Total Agents",
"registeredAgents": "Registered agents",
"totalOperations": "Total Operations",
"allRecordedOps": "All recorded operations",
"activeEpochs": "Active Epochs",
"merkleRollups": "Merkle rollup epochs",
"pendingExports": "Pending Exports",
"queuedOrRunning": "Queued or running",
"quickActions": "Quick Actions",
"registerAgent": "Register Agent",
"viewOperations": "View Operations",
"createExport": "Create Export",
"recentOperations": "Recent Operations",
"noOperations": "No operations recorded yet.",
"agentSummary": "Agent Summary",
"noAgentsRegistered": "No agents registered yet. Register an agent to start recording operations.",
"latestActivity": "Latest Activity",
"failedToLoad": "Failed to load dashboard data. Ensure the API is reachable.",
"colOperationId": "Operation ID",
"colAgent": "Agent",
"colType": "Type",
"colIssued": "Issued",
"colSeq": "Seq"
},
"agents": {
"title": "Agents",
"subtitle": "Manage registered AI agents",
"registerAgent": "Register Agent",
"searchPlaceholder": "Search agents by ID...",
"colAgent": "Agent",
"colStatus": "Status",
"colOperations": "Operations",
"colLatestActivity": "Latest Activity",
"emptyMessage": "No agents found. Register an agent to get started.",
"failedToLoad": "Failed to load agents.",
"deleteAgent": "Delete Agent",
"deleteConfirmPre": "Are you sure you want to delete agent ",
"deleteConfirmPost": "? This will permanently remove the agent and all its keys. This action cannot be undone.",
"deleting": "Deleting...",
"failedToDelete": "Failed to delete agent."
},
"agentDetail": {
"title": "Agent Details",
"agentId": "Agent ID",
"status": "Status",
"organization": "Organization",
"displayName": "Display Name",
"responsibleEntity": "Responsible Entity",
"created": "Created",
"keys": "Keys",
"noKeys": "No keys registered for this agent.",
"colKeyId": "Key ID",
"colAlgorithm": "Algorithm",
"colStatus": "Status",
"colCreated": "Created",
"revoke": "Revoke",
"operations": "Operations",
"freezeAgent": "Freeze Agent",
"unfreezeAgent": "Unfreeze Agent",
"freezeDescPre": "Freezing agent ",
"freezeDescPost": " will prevent it from submitting new operations. This action is recorded in the audit trail.",
"unfreezeDescPre": "Unfreezing agent ",
"unfreezeDescPost": " will allow it to resume submitting operations. This action is recorded in the audit trail.",
"reason": "Reason",
"freezePlaceholder": "Provide a reason for freezing this agent...",
"unfreezePlaceholder": "Provide a reason for unfreezing this agent...",
"freezing": "Freezing...",
"confirmFreeze": "Confirm Freeze",
"unfreezing": "Unfreezing...",
"confirmUnfreeze": "Confirm Unfreeze",
"failedToFreeze": "Failed to freeze agent.",
"failedToUnfreeze": "Failed to unfreeze agent.",
"reasonRequired": "A reason is required.",
"revokeKey": "Revoke Key",
"revokeKeyDescPre": "Revoking key ",
"revokeKeyDescPost": " will prevent it from being used to sign operations. This action cannot be undone.",
"revokePlaceholder": "Provide a reason for revoking this key...",
"revoking": "Revoking...",
"confirmRevoke": "Confirm Revoke",
"failedToRevoke": "Failed to revoke key.",
"failedToLoad": "Failed to load agent.",
"mayNotExist": "The agent may not exist.",
"noOperations": "No operations recorded for this agent."
},
"operationDetail": {
"title": "Operation Details",
"failedToLoad": "Failed to load operation.",
"mayNotExist": "The operation may not exist."
},
"operationCard": {
"operationRecord": "Operation Record",
"formatted": "Formatted",
"rawJson": "Raw JSON",
"operationId": "Operation ID",
"agentId": "Agent ID",
"orgId": "Org ID",
"type": "Type",
"issuedAt": "Issued At",
"createdAt": "Created At",
"ttlMs": "TTL (ms)",
"nonce": "Nonce",
"seqNo": "Seq No",
"signingKey": "Signing Key",
"payloadHash": "Payload Hash",
"prevChainHash": "Prev Chain Hash",
"chainHash": "Chain Hash",
"r2PayloadKey": "R2 Payload Key",
"payload": "Payload",
"receipt": "Receipt (EAR)",
"receiptId": "Receipt ID",
"r2ReceiptKey": "R2 Receipt Key"
},
"operations": {
"title": "Operations",
"subtitle": "Browse and inspect recorded operations",
"searchPlaceholder": "Search by ID, agent, or type...",
"colOperationId": "Operation ID",
"colAgent": "Agent",
"colType": "Type",
"colIssuedAt": "Issued At",
"colSeq": "Seq",
"agentIdFilter": "Agent ID",
"filterByAgent": "Filter by agent",
"typeFilter": "Type",
"filterByType": "Filter by type",
"emptyMessage": "No operations found matching your filters.",
"failedToLoad": "Failed to load operations."
},
"epochs": {
"title": "Epochs",
"subtitle": "Periodic Merkle-tree rollups anchoring operations",
"colEpochId": "Epoch ID",
"colTimeRange": "Time Range",
"colLeaves": "Leaves",
"colRootHash": "Root Hash",
"colCreated": "Created",
"emptyMessage": "No epochs have been created yet. Epochs are generated periodically as operations are recorded.",
"failedToLoad": "Failed to load epochs."
},
"epochDetail": {
"title": "Epoch Details",
"viewOperations": "View Operations",
"epochMetadata": "Epoch Metadata",
"epochId": "Epoch ID",
"organization": "Organization",
"startTime": "Start Time",
"endTime": "End Time",
"duration": "Duration",
"durationMinutes": "{{count}} minutes",
"createdAt": "Created At",
"merkleTree": "Merkle Tree",
"rootHash": "Root Hash",
"leafCount": "Leaf Count",
"operationsUnit": "operations",
"tsaAnchor": "TSA Anchor",
"tsaToken": "TSA Token",
"tsaUrl": "TSA URL",
"anchoredAt": "Anchored At",
"noTsaAnchor": "No TSA anchor information available for this epoch.",
"storage": "Storage",
"r2EpochKey": "R2 Epoch Key",
"failedToLoad": "Failed to load epoch.",
"mayNotExist": "The epoch may not exist."
},
"audit": {
"title": "Audit Trail",
"subtitle": "Query and inspect the full audit log of operations",
"exportData": "Export Data",
"queryBuilder": "Query Builder",
"clearFilters": "Clear Filters",
"agentId": "Agent ID",
"filterByAgent": "Filter by agent",
"operationType": "Operation Type",
"filterByType": "Filter by type",
"startTime": "Start Time",
"endTime": "End Time",
"showing": "Showing {{shown}} of {{total}} results",
"moreResults": "More results available",
"colOperationId": "Operation ID",
"colAgent": "Agent",
"colType": "Type",
"colIssuedAt": "Issued At",
"colSeq": "Seq",
"colChainHash": "Chain Hash",
"emptyMessage": "No audit records match your query. Adjust your filters or clear them to see all records.",
"failedToLoad": "Failed to load audit data."
},
"exports": {
"title": "Exports",
"subtitle": "Create and download compliance data exports",
"createExport": "Create Export",
"colExportId": "Export ID",
"colStatus": "Status",
"colFilters": "Filters",
"colCreated": "Created",
"colCompleted": "Completed",
"emptyMessage": "No exports have been created yet. Create an export to download compliance data.",
"failedToLoad": "Failed to load exports.",
"startTime": "Start Time",
"endTime": "End Time",
"agentIdOptional": "Agent ID (optional)",
"filterByAgent": "Filter by specific agent",
"operationTypeOptional": "Operation Type (optional)",
"filterByOperationType": "Filter by operation type",
"format": "Format",
"creating": "Creating...",
"startEndRequired": "Start time and end time are required.",
"failedToCreate": "Failed to create export."
},
"jwks": {
"title": "JWKS",
"subtitle": "JSON Web Key Set for token verification",
"publicKeys": "Public Keys",
"colKeyId": "Key ID",
"colKeyType": "Key Type",
"colAlgorithm": "Algorithm",
"colCurve": "Curve",
"colUse": "Use",
"colPublicKey": "Public Key",
"emptyMessage": "No JWKS keys available. The server may not have published any public keys.",
"failedToLoad": "Failed to load JWKS.",
"endpoint": "JWKS endpoint:"
},
"settings": {
"title": "Settings",
"subtitle": "Account and organization details",
"user": "User",
"displayName": "Display Name",
"email": "Email",
"subject": "Subject",
"role": "Role",
"organization": "Organization",
"organizationId": "Organization ID"
},
"login": {
"signIn": "Sign in",
"email": "Email",
"emailPlaceholder": "you@company.com",
"password": "Password",
"signingIn": "Signing in...",
"submitSignIn": "Sign In",
"noAccount": "No account? ",
"createOne": "Create one",
"loginFailed": "Login failed"
},
"register": {
"createAccount": "Create account",
"orgName": "Organization Name",
"orgPlaceholder": "Acme Corp",
"displayName": "Display Name",
"displayNamePlaceholder": "Jane Smith",
"email": "Email",
"emailPlaceholder": "you@company.com",
"password": "Password",
"passwordPlaceholder": "Minimum 8 characters",
"creatingAccount": "Creating account...",
"submitCreateAccount": "Create Account",
"hasAccount": "Already have an account? ",
"signIn": "Sign in",
"registrationFailed": "Registration failed"
},
"agentRegistration": {
"displayName": "Display Name",
"displayNamePlaceholder": "My AI Agent",
"displayNameRequired": "Display Name is required.",
"responsibleEntity": "Responsible Entity (optional)",
"responsibleEntityPlaceholder": "Person or team responsible",
"submitting": "Registering...",
"submit": "Register Agent",
"failedToRegister": "Failed to register agent.",
"agentRegistered": "Agent Registered",
"privateKeySaveNow": "Private Key — Save This Now",
"privateKeyWarning": "This will not be shown again. Store it as an environment variable or in a secrets manager.",
"apiToken": "API Token",
"apiTokenDesc": "Use this as your ELYDORA_TOKEN environment variable. This is your bearer token for API authentication.",
"tokenExpiration": "Token Expiration",
"customDays": "Number of days",
"days": "days",
"enterValidDays": "Enter a valid number of days (minimum 1).",
"issuing": "Issuing...",
"issueApiToken": "Issue API Token",
"failedToIssueToken": "Failed to issue token.",
"credAgentId": "Agent ID",
"credKeyId": "Key ID",
"credOrgId": "Org ID",
"credAlgorithm": "Algorithm",
"chooseIntegration": "Choose Integration",
"chooseIntegrationDesc": "How will this agent connect to Elydora?",
"supported": "Supported (one-command install)",
"sdkIntegration": "SDK Integration",
"install": "Install",
"backToList": "Back",
"sdkTutorial": "SDK Tutorial",
"aiReadyPrompt": "AI-Ready Prompt",
"aiReadyPromptDesc": "Copy this prompt and paste it into your AI agent to set up Elydora automatically.",
"copyPrompt": "Copy Prompt",
"done": "Done",
"step": "Step {{current}} of {{total}}"
},
"chain": {
"title": "Chain Visualization",
"previous": "Previous",
"current": "Current ({{id}})",
"next": "Next",
"pending": "Pending...",
"chainBlock": "Chain block",
"currentOperation": "Current operation"
},
"verification": {
"title": "Verification",
"verify": "Verify",
"reVerify": "Re-verify",
"verifying": "Verifying...",
"verifiedSuccess": "Operation verified successfully",
"verificationFailed": "Verification failed",
"signature": "Signature",
"signatureDesc": "Ed25519 signature is valid for the given public key",
"chainCheck": "Chain",
"chainCheckDesc": "Previous chain hash matches the expected value",
"receiptCheck": "Receipt",
"receiptCheckDesc": "Server receipt (EAR) is valid and matches the operation",
"merkle": "Merkle",
"merkleDesc": "Operation is included in the epoch Merkle tree",
"pending": "Pending",
"passed": "Passed",
"failed": "Failed",
"errors": "Errors"
},
"tokenExpiration": {
"24hours": "24 hours",
"7days": "7 days",
"1month": "1 month",
"1year": "1 year",
"custom": "Custom",
"neverExpire": "Never expire"
},
"integrations": {
"claudecode": "Anthropic CLI agent",
"cursor": "AI-powered code editor",
"gemini": "Google AI CLI agent",
"kirocli": "AWS AI CLI agent",
"kiroide": "AWS spec-driven AI IDE",
"opencode": "Open-source TUI agent",
"copilot": "GitHub Copilot CLI agent",
"letta": "Letta AI CLI agent",
"codex": "OpenAI CLI agent",
"kimi": "Moonshot AI assistant",
"enterprise": "Your own internal agent",
"gui": "Desktop or web-based agent",
"other": "Any custom integration"
}
}