agentsecrets-cli 1.1.1__tar.gz → 3.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,7 @@ config.json
44
44
  # Build artifacts
45
45
  dist/
46
46
  build/
47
- bin/
47
+ /bin/
48
48
  *.egg-info/
49
49
  node_modules/
50
50
  .npm/
@@ -70,4 +70,9 @@ docs/learning/
70
70
  proxy_spec.md
71
71
  code_review.md
72
72
  content/
73
- specs/
73
+ specs/
74
+
75
+ # AgentSecrets environment files
76
+ .env.development
77
+ .env.staging
78
+ .env.production
@@ -1,3 +1,18 @@
1
+ Metadata-Version: 2.5
2
+ Name: agentsecrets-cli
3
+ Version: 3.1.2
4
+ Summary: AI-native zero-knowledge secrets manager
5
+ Author-email: The Seventeen <engineering@theseventeen.co>
6
+ License-Expression: MIT
7
+ Keywords: agents,ai,cli,credentials,secrets,security
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Security
13
+ Requires-Python: >=3.8
14
+ Description-Content-Type: text/markdown
15
+
1
16
  # AgentSecrets
2
17
 
3
18
  > **Zero-knowledge secrets infrastructure built for AI agents to operate, not just consume.**
@@ -32,7 +47,7 @@ Your agent checks its own status. Notices a secret is out of sync. Pulls the lat
32
47
  ```bash
33
48
  # An AI agent managing its own secrets workflow autonomously
34
49
 
35
- agentsecrets status # what workspace, project, last sync?
50
+ agentsecrets status # what workspace, project, environment, last sync?
36
51
  agentsecrets secrets diff # anything out of sync?
37
52
  agentsecrets secrets pull # sync from cloud to keychain
38
53
  agentsecrets secrets list # what keys are available?
@@ -96,7 +111,7 @@ pip install agentsecrets-cli
96
111
  ## Quick Start
97
112
 
98
113
  ```bash
99
- # Create account + encryption keys
114
+ # Set up your account (first time) or initialise a new project (returning user)
100
115
  agentsecrets init
101
116
 
102
117
  # Create a project
@@ -138,6 +153,7 @@ agentsecrets status
138
153
  # Logged in as: steppa@theseventeen.co
139
154
  # Workspace: Acme Engineering
140
155
  # Project: payments-service
156
+ # Environment: development
141
157
  # Last pull: 2 minutes ago
142
158
  ```
143
159
 
@@ -208,7 +224,7 @@ Allowlist modifications require admin role and password verification. Non-admins
208
224
 
209
225
  ```bash
210
226
  agentsecrets proxy logs --last 5
211
- # 14:23:01 OK (REDACTED) GET httpbin.org/headers STRIPE_KEY bearer 200 credential_echo 245ms
227
+ # 14:23:01 * OK (REDACTED) GET httpbin.org/headers STRIPE_KEY bearer 200 credential_echo 245ms
212
228
  ```
213
229
 
214
230
  ### Role Management
@@ -390,8 +406,9 @@ response = as_client.call(
390
406
  You pass a key name. The SDK resolves from the OS keychain, injects at the transport layer, returns only the API response. Every user of every tool built on the SDK gets zero-knowledge credential management automatically.
391
407
 
392
408
  **Built on the SDK:**
393
- - [AgentSecrets MCP Server Template](https://github.com/The-17/agentsecrets-mcp-template) — scaffold for building MCP servers with zero credential storage
394
- - [AgentSecrets for LangChain](https://github.com/The-17/agentsecrets-langchain) — zero-knowledge API calls in any LangChain agent
409
+ - [Zero-Knowledge MCP Server Template](https://github.com/The-17/zero-knowledge-mcp) — scaffold for building MCP servers with zero credential storage
410
+ - AgentSecrets for LangChain — zero-knowledge API calls in any LangChain agent *(coming soon)*
411
+ - AgentSecrets JS SDK — JavaScript/Node.js SDK *(coming soon)*
395
412
 
396
413
  ---
397
414
 
@@ -399,10 +416,10 @@ You pass a key name. The SDK resolves from the OS keychain, injects at the trans
399
416
 
400
417
  ### Account
401
418
  ```bash
402
- agentsecrets init # Create account or login
419
+ agentsecrets init # Set up account or initialise a new project
403
420
  agentsecrets login # Login to existing account
404
421
  agentsecrets logout # Clear session
405
- agentsecrets status # Current user, workspace, project, last sync
422
+ agentsecrets status # Current user, workspace, project, environment, last sync
406
423
  ```
407
424
 
408
425
  ### Workspaces
@@ -422,6 +439,15 @@ agentsecrets project update my-app # Update project
422
439
  agentsecrets project delete my-app # Delete project
423
440
  ```
424
441
 
442
+ ### Environments
443
+ ```bash
444
+ agentsecrets environment switch <name> # Switch active environment (development, staging, production)
445
+ agentsecrets environment list # List all environments and secret counts
446
+ agentsecrets environment copy <from> <to> # Copy all secrets from one env to another
447
+ agentsecrets environment merge <from> <to> # Merge secrets and prompt for new values
448
+ agentsecrets environment clean # Delete all secrets in current environment
449
+ ```
450
+
425
451
  ### Secrets
426
452
  ```bash
427
453
  agentsecrets secrets set KEY=value # Store a secret
@@ -430,7 +456,8 @@ agentsecrets secrets list # List key names — never values
430
456
  agentsecrets secrets push # Upload .env to cloud (encrypted)
431
457
  agentsecrets secrets pull # Download cloud secrets to keychain
432
458
  agentsecrets secrets delete KEY # Remove a secret
433
- agentsecrets secrets diff # Compare local vs cloud
459
+ agentsecrets secrets diff # Compare local vs cloud active environment
460
+ agentsecrets secrets diff --from X --to Y # Compare two environments directly
434
461
  ```
435
462
 
436
463
  ### Proxy & Calls
@@ -447,10 +474,10 @@ agentsecrets mcp install # Auto-configure AI tools
447
474
 
448
475
  ### Logging & Audit
449
476
  ```bash
450
- agentsecrets log list [--tail] # View or stream global backend logs
451
- agentsecrets log export --format csv # Export global logs to CSV/JSON
452
- agentsecrets log summary # View global statistics and usage metrics
453
- agentsecrets log detail <id> # Inspect a specific request deeply
477
+ agentsecrets logs list [--tail] # View or stream global backend logs
478
+ agentsecrets logs export --format csv # Export global logs to CSV/JSON
479
+ agentsecrets logs summary # View global statistics and usage metrics
480
+ agentsecrets logs detail <id> # Inspect a specific request deeply
454
481
  ```
455
482
 
456
483
  ### Agent Identity
@@ -490,6 +517,7 @@ agentsecrets workspace demote user@email.com # Revoke admin role
490
517
  | **Domain allowlist enforcement** | ✅ Deny-by-default | ❌ | ❌ | ❌ | ❌ |
491
518
  | **Response body redaction** | ✅ Echo exfiltration defense | ❌ | ❌ | ❌ | ❌ |
492
519
  | **Prompt injection protection** | ✅ Structural | ❌ | ❌ | ❌ | ❌ |
520
+ | **Environment support (dev/staging/prod)** | ✅ Built-in | ⚠️ Manual | ⚠️ Manual | ✅ | ⚠️ Manual |
493
521
  | **Env var injection (`run --`)** | ✅ `agentsecrets env` | ❌ | ❌ | ✅ `doppler run` | ✅ `op run` |
494
522
  | **AI-native workflow** | ✅ Built for it | ❌ | ❌ | ❌ | ❌ |
495
523
  | **SDK for building on top** | ✅ | ❌ | ❌ | ❌ | ❌ |
@@ -522,12 +550,12 @@ agentsecrets secrets pull
522
550
  ### Autonomous Agent Deployment
523
551
  ```bash
524
552
  # Agent handles this entire flow without human intervention
525
- agentsecrets secrets diff # checks for drift
526
- agentsecrets secrets pull # syncs if needed
527
- agentsecrets workspace switch production
528
- agentsecrets secrets pull
553
+ agentsecrets secrets diff # checks for drift
554
+ agentsecrets secrets pull # syncs if needed
555
+ agentsecrets environment switch production # switch to production environment
556
+ agentsecrets secrets pull # pull production secrets
529
557
  agentsecrets env -- python deploy.py
530
- agentsecrets proxy logs # audits what happened
558
+ agentsecrets proxy logs # audits what happened
531
559
  ```
532
560
 
533
561
  ### Incident Response at 2am
@@ -573,11 +601,14 @@ See [ARCHITECTURE.md](docs/ARCHITECTURE.md) and [PROXY.md](docs/PROXY.md) for de
573
601
  - [x] Workspace role management (promote/demote)
574
602
  - [x] `agentsecrets env` — environment variable injection
575
603
  - [x] Python SDK (`pip install agentsecrets`)
576
- - [ ] AgentSecrets MCP Server Template
604
+ - [x] Zero-Knowledge MCP Server Template
605
+ - [x] Agent identity + token management
606
+ - [x] Governance audit log
607
+ - [x] Environment support (development / staging / production)
577
608
  - [ ] AgentSecrets for LangChain
578
609
  - [ ] AgentSecrets for CrewAI
610
+ - [ ] JavaScript / Node.js SDK
579
611
  - [ ] Secret rotation
580
- - [ ] Environment support (dev/staging/prod)
581
612
  - [ ] Web dashboard
582
613
  - [ ] Cloud resolver (serverless + production deployments)
583
614
  - [ ] AgentSecrets Connect (multi-tenant credential delegation)
@@ -587,7 +618,7 @@ See [ARCHITECTURE.md](docs/ARCHITECTURE.md) and [PROXY.md](docs/PROXY.md) for de
587
618
  ## Security
588
619
 
589
620
  Reporting vulnerabilities: do NOT open public issues.
590
- Email: hello@theseventeen.co — response within 24 hours.
621
+ Email: engineering@theseventeen.co — response within 24 hours.
591
622
 
592
623
  ---
593
624
 
@@ -1,18 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: agentsecrets-cli
3
- Version: 1.1.1
4
- Summary: AI-native zero-knowledge secrets manager
5
- Author-email: The Seventeen <hello@theseventeen.co>
6
- License-Expression: MIT
7
- Keywords: agents,ai,cli,credentials,secrets,security
8
- Classifier: Development Status :: 4 - Beta
9
- Classifier: Intended Audience :: Developers
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Topic :: Security
13
- Requires-Python: >=3.8
14
- Description-Content-Type: text/markdown
15
-
16
1
  # AgentSecrets
17
2
 
18
3
  > **Zero-knowledge secrets infrastructure built for AI agents to operate, not just consume.**
@@ -47,7 +32,7 @@ Your agent checks its own status. Notices a secret is out of sync. Pulls the lat
47
32
  ```bash
48
33
  # An AI agent managing its own secrets workflow autonomously
49
34
 
50
- agentsecrets status # what workspace, project, last sync?
35
+ agentsecrets status # what workspace, project, environment, last sync?
51
36
  agentsecrets secrets diff # anything out of sync?
52
37
  agentsecrets secrets pull # sync from cloud to keychain
53
38
  agentsecrets secrets list # what keys are available?
@@ -111,7 +96,7 @@ pip install agentsecrets-cli
111
96
  ## Quick Start
112
97
 
113
98
  ```bash
114
- # Create account + encryption keys
99
+ # Set up your account (first time) or initialise a new project (returning user)
115
100
  agentsecrets init
116
101
 
117
102
  # Create a project
@@ -153,6 +138,7 @@ agentsecrets status
153
138
  # Logged in as: steppa@theseventeen.co
154
139
  # Workspace: Acme Engineering
155
140
  # Project: payments-service
141
+ # Environment: development
156
142
  # Last pull: 2 minutes ago
157
143
  ```
158
144
 
@@ -223,7 +209,7 @@ Allowlist modifications require admin role and password verification. Non-admins
223
209
 
224
210
  ```bash
225
211
  agentsecrets proxy logs --last 5
226
- # 14:23:01 OK (REDACTED) GET httpbin.org/headers STRIPE_KEY bearer 200 credential_echo 245ms
212
+ # 14:23:01 * OK (REDACTED) GET httpbin.org/headers STRIPE_KEY bearer 200 credential_echo 245ms
227
213
  ```
228
214
 
229
215
  ### Role Management
@@ -405,8 +391,9 @@ response = as_client.call(
405
391
  You pass a key name. The SDK resolves from the OS keychain, injects at the transport layer, returns only the API response. Every user of every tool built on the SDK gets zero-knowledge credential management automatically.
406
392
 
407
393
  **Built on the SDK:**
408
- - [AgentSecrets MCP Server Template](https://github.com/The-17/agentsecrets-mcp-template) — scaffold for building MCP servers with zero credential storage
409
- - [AgentSecrets for LangChain](https://github.com/The-17/agentsecrets-langchain) — zero-knowledge API calls in any LangChain agent
394
+ - [Zero-Knowledge MCP Server Template](https://github.com/The-17/zero-knowledge-mcp) — scaffold for building MCP servers with zero credential storage
395
+ - AgentSecrets for LangChain — zero-knowledge API calls in any LangChain agent *(coming soon)*
396
+ - AgentSecrets JS SDK — JavaScript/Node.js SDK *(coming soon)*
410
397
 
411
398
  ---
412
399
 
@@ -414,10 +401,10 @@ You pass a key name. The SDK resolves from the OS keychain, injects at the trans
414
401
 
415
402
  ### Account
416
403
  ```bash
417
- agentsecrets init # Create account or login
404
+ agentsecrets init # Set up account or initialise a new project
418
405
  agentsecrets login # Login to existing account
419
406
  agentsecrets logout # Clear session
420
- agentsecrets status # Current user, workspace, project, last sync
407
+ agentsecrets status # Current user, workspace, project, environment, last sync
421
408
  ```
422
409
 
423
410
  ### Workspaces
@@ -437,6 +424,15 @@ agentsecrets project update my-app # Update project
437
424
  agentsecrets project delete my-app # Delete project
438
425
  ```
439
426
 
427
+ ### Environments
428
+ ```bash
429
+ agentsecrets environment switch <name> # Switch active environment (development, staging, production)
430
+ agentsecrets environment list # List all environments and secret counts
431
+ agentsecrets environment copy <from> <to> # Copy all secrets from one env to another
432
+ agentsecrets environment merge <from> <to> # Merge secrets and prompt for new values
433
+ agentsecrets environment clean # Delete all secrets in current environment
434
+ ```
435
+
440
436
  ### Secrets
441
437
  ```bash
442
438
  agentsecrets secrets set KEY=value # Store a secret
@@ -445,7 +441,8 @@ agentsecrets secrets list # List key names — never values
445
441
  agentsecrets secrets push # Upload .env to cloud (encrypted)
446
442
  agentsecrets secrets pull # Download cloud secrets to keychain
447
443
  agentsecrets secrets delete KEY # Remove a secret
448
- agentsecrets secrets diff # Compare local vs cloud
444
+ agentsecrets secrets diff # Compare local vs cloud active environment
445
+ agentsecrets secrets diff --from X --to Y # Compare two environments directly
449
446
  ```
450
447
 
451
448
  ### Proxy & Calls
@@ -462,10 +459,10 @@ agentsecrets mcp install # Auto-configure AI tools
462
459
 
463
460
  ### Logging & Audit
464
461
  ```bash
465
- agentsecrets log list [--tail] # View or stream global backend logs
466
- agentsecrets log export --format csv # Export global logs to CSV/JSON
467
- agentsecrets log summary # View global statistics and usage metrics
468
- agentsecrets log detail <id> # Inspect a specific request deeply
462
+ agentsecrets logs list [--tail] # View or stream global backend logs
463
+ agentsecrets logs export --format csv # Export global logs to CSV/JSON
464
+ agentsecrets logs summary # View global statistics and usage metrics
465
+ agentsecrets logs detail <id> # Inspect a specific request deeply
469
466
  ```
470
467
 
471
468
  ### Agent Identity
@@ -505,6 +502,7 @@ agentsecrets workspace demote user@email.com # Revoke admin role
505
502
  | **Domain allowlist enforcement** | ✅ Deny-by-default | ❌ | ❌ | ❌ | ❌ |
506
503
  | **Response body redaction** | ✅ Echo exfiltration defense | ❌ | ❌ | ❌ | ❌ |
507
504
  | **Prompt injection protection** | ✅ Structural | ❌ | ❌ | ❌ | ❌ |
505
+ | **Environment support (dev/staging/prod)** | ✅ Built-in | ⚠️ Manual | ⚠️ Manual | ✅ | ⚠️ Manual |
508
506
  | **Env var injection (`run --`)** | ✅ `agentsecrets env` | ❌ | ❌ | ✅ `doppler run` | ✅ `op run` |
509
507
  | **AI-native workflow** | ✅ Built for it | ❌ | ❌ | ❌ | ❌ |
510
508
  | **SDK for building on top** | ✅ | ❌ | ❌ | ❌ | ❌ |
@@ -537,12 +535,12 @@ agentsecrets secrets pull
537
535
  ### Autonomous Agent Deployment
538
536
  ```bash
539
537
  # Agent handles this entire flow without human intervention
540
- agentsecrets secrets diff # checks for drift
541
- agentsecrets secrets pull # syncs if needed
542
- agentsecrets workspace switch production
543
- agentsecrets secrets pull
538
+ agentsecrets secrets diff # checks for drift
539
+ agentsecrets secrets pull # syncs if needed
540
+ agentsecrets environment switch production # switch to production environment
541
+ agentsecrets secrets pull # pull production secrets
544
542
  agentsecrets env -- python deploy.py
545
- agentsecrets proxy logs # audits what happened
543
+ agentsecrets proxy logs # audits what happened
546
544
  ```
547
545
 
548
546
  ### Incident Response at 2am
@@ -588,11 +586,14 @@ See [ARCHITECTURE.md](docs/ARCHITECTURE.md) and [PROXY.md](docs/PROXY.md) for de
588
586
  - [x] Workspace role management (promote/demote)
589
587
  - [x] `agentsecrets env` — environment variable injection
590
588
  - [x] Python SDK (`pip install agentsecrets`)
591
- - [ ] AgentSecrets MCP Server Template
589
+ - [x] Zero-Knowledge MCP Server Template
590
+ - [x] Agent identity + token management
591
+ - [x] Governance audit log
592
+ - [x] Environment support (development / staging / production)
592
593
  - [ ] AgentSecrets for LangChain
593
594
  - [ ] AgentSecrets for CrewAI
595
+ - [ ] JavaScript / Node.js SDK
594
596
  - [ ] Secret rotation
595
- - [ ] Environment support (dev/staging/prod)
596
597
  - [ ] Web dashboard
597
598
  - [ ] Cloud resolver (serverless + production deployments)
598
599
  - [ ] AgentSecrets Connect (multi-tenant credential delegation)
@@ -602,7 +603,7 @@ See [ARCHITECTURE.md](docs/ARCHITECTURE.md) and [PROXY.md](docs/PROXY.md) for de
602
603
  ## Security
603
604
 
604
605
  Reporting vulnerabilities: do NOT open public issues.
605
- Email: hello@theseventeen.co — response within 24 hours.
606
+ Email: engineering@theseventeen.co — response within 24 hours.
606
607
 
607
608
  ---
608
609
 
@@ -1,36 +1,36 @@
1
- [build-system]
2
- requires = ["hatchling"]
3
- build-backend = "hatchling.build"
4
-
5
- [project]
6
- name = "agentsecrets-cli"
7
- version = "1.1.1"
8
- description = "AI-native zero-knowledge secrets manager"
9
- readme = "README.md"
10
- requires-python = ">=3.8"
11
- license = "MIT"
12
- authors = [
13
- { name = "The Seventeen", email = "hello@theseventeen.co" },
14
- ]
15
- keywords = [
16
- "ai",
17
- "agents",
18
- "secrets",
19
- "security",
20
- "credentials",
21
- "cli",
22
- ]
23
- classifiers = [
24
- "Development Status :: 4 - Beta",
25
- "Intended Audience :: Developers",
26
- "License :: OSI Approved :: MIT License",
27
- "Programming Language :: Python :: 3",
28
- "Topic :: Security",
29
- ]
30
- dependencies = []
31
-
32
- [project.scripts]
33
- agentsecrets = "agentsecrets.main:main"
34
-
35
- [tool.hatch.build.targets.wheel]
36
- packages = ["src/agentsecrets"]
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "agentsecrets-cli"
7
+ version = "3.1.2"
8
+ description = "AI-native zero-knowledge secrets manager"
9
+ readme = "README.md"
10
+ requires-python = ">=3.8"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "The Seventeen", email = "engineering@theseventeen.co" },
14
+ ]
15
+ keywords = [
16
+ "ai",
17
+ "agents",
18
+ "secrets",
19
+ "security",
20
+ "credentials",
21
+ "cli",
22
+ ]
23
+ classifiers = [
24
+ "Development Status :: 4 - Beta",
25
+ "Intended Audience :: Developers",
26
+ "License :: OSI Approved :: MIT License",
27
+ "Programming Language :: Python :: 3",
28
+ "Topic :: Security",
29
+ ]
30
+ dependencies = []
31
+
32
+ [project.scripts]
33
+ agentsecrets = "agentsecrets.main:main"
34
+
35
+ [tool.hatch.build.targets.wheel]
36
+ packages = ["src/agentsecrets"]
@@ -8,28 +8,26 @@ import tempfile
8
8
  import shutil
9
9
  import stat
10
10
 
11
- # Try to get the version from package metadata, fallback to a hardcoded version
12
- def _get_version():
13
- try:
14
- from importlib.metadata import version, PackageNotFoundError
15
- except ImportError: # Python < 3.8
16
- try:
17
- from pkg_resources import get_distribution, DistributionNotFound
18
- except ImportError:
19
- # Fallback if pkg_resources is also not available
20
- return "1.1.0"
11
+ import json
21
12
 
22
- try:
23
- return get_distribution("agentsecrets-cli").version
24
- except DistributionNotFound:
25
- # Fallback if package not found
26
- return "1.1.0"
13
+ def get_latest_github_version():
14
+ """Fetches the latest version tag from GitHub API."""
15
+ try:
16
+ url = "https://api.github.com/repos/The-17/agentsecrets/releases/latest"
17
+ req = urllib.request.Request(url, headers={'User-Agent': 'agentsecrets-pypi'})
18
+ with urllib.request.urlopen(req) as response:
19
+ data = json.loads(response.read().decode())
20
+ return data['tag_name'].lstrip('v')
21
+ except Exception:
22
+ return None
27
23
 
24
+ def _get_version():
28
25
  try:
26
+ from importlib.metadata import version, PackageNotFoundError
29
27
  return version("agentsecrets-cli")
30
- except PackageNotFoundError:
31
- # Fallback if package not found
32
- return "1.1.0"
28
+ except (ImportError, PackageNotFoundError):
29
+ latest = get_latest_github_version()
30
+ return latest if latest else "1.3.1"
33
31
 
34
32
  VERSION = _get_version()
35
33
  GITHUB_REPO = "The-17/agentsecrets"
@@ -126,6 +124,19 @@ def ensure_binary():
126
124
  # Ensure executable
127
125
  st = os.stat(binary_path)
128
126
  os.chmod(binary_path, st.st_mode | stat.S_IEXEC | stat.S_IXGRP | stat.S_IXOTH)
127
+
128
+ # Pre-register with keychain-auth if available. This eliminates
129
+ # the one-time setup spinner on the user's first command.
130
+ import subprocess
131
+ kc = shutil.which("keychain-auth")
132
+ if kc:
133
+ try:
134
+ subprocess.run(
135
+ [kc, "register", binary_path],
136
+ timeout=5, capture_output=True,
137
+ )
138
+ except Exception:
139
+ pass # AutoSetup handles registration at runtime if needed
129
140
 
130
141
  return binary_path
131
142