vestauth 0.22.0 → 0.22.1
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.
- package/CHANGELOG.md +7 -1
- package/README.md +63 -58
- package/package.json +1 -1
- package/src/server/index.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
[Unreleased](https://github.com/vestauth/vestauth/compare/v0.22.
|
|
5
|
+
[Unreleased](https://github.com/vestauth/vestauth/compare/v0.22.1...main)
|
|
6
|
+
|
|
7
|
+
## [0.22.1](https://github.com/vestauth/vestauth/compare/v0.22.0...v0.22.1) (2026-03-02)
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
* `vestauth server start` should use `POST /whoami`
|
|
6
12
|
|
|
7
13
|
## [0.22.0](https://github.com/vestauth/vestauth/compare/v0.21.1...v0.22.0) (2026-03-02)
|
|
8
14
|
|
package/README.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*web-bot-auth for agents*–from the creator of [`dotenv`](https://github.com/motdotla/dotenv) and [`dotenvx`](https://github.com/dotenvx/dotenvx).
|
|
4
4
|
|
|
5
5
|
* identity ([web-bot-auth](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture))
|
|
6
|
-
* authentication
|
|
7
6
|
* tools!
|
|
7
|
+
* authentication
|
|
8
8
|
|
|
9
9
|
<a target="_blank" href="https://chat.openai.com/?q=Read%20https%3A%2F%2Fgithub.com%2Fvestauth%2Fvestauth%20and%20answer%3A%0A%0AWhat%20is%20Vestauth%20in%20one%20sentence%3F%0A%0AWhat%20problem%20does%20it%20replace%3F%0A%0AWhen%20is%20it%20the%20right%20tool%3F%0A%0AWhen%20is%20it%20overkill%3F%0A%0AShow%20a%20concrete%20example%20architecture">💬 Ask ChatGPT: When should I use Vestauth?</a>
|
|
10
10
|
|
|
@@ -94,66 +94,21 @@ AGENT_PRIVATE_JWK="{"crv":"Ed25519","d":"Z9vbwN-3eiFMVv_TPWXOxqSMJAT21kZvejWi72y
|
|
|
94
94
|
|
|
95
95
|
|
|
96
96
|
|
|
97
|
-
## Authentication
|
|
98
|
-
|
|
99
|
-
> Authenticate agents – `vestauth.tool.verify`…
|
|
100
|
-
|
|
101
|
-
```js
|
|
102
|
-
...
|
|
103
|
-
const vestauth = require('vestauth')
|
|
104
|
-
|
|
105
|
-
app.get('/whoami', async (req, res) => {
|
|
106
|
-
try {
|
|
107
|
-
const url = `${req.protocol}://${req.get('host')}${req.originalUrl}`
|
|
108
|
-
const agent = await vestauth.tool.verify(req.method, url, req.headers)
|
|
109
|
-
|
|
110
|
-
res.json(agent)
|
|
111
|
-
} catch (err) {
|
|
112
|
-
res.status(401).json({ code: 401, error: { message: err.message }})
|
|
113
|
-
}
|
|
114
|
-
})
|
|
115
|
-
...
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
> …the agents sign HTTP requests with a drop-in curl wrapper.
|
|
119
|
-
|
|
120
|
-
```sh
|
|
121
|
-
> SIGNED - 200
|
|
122
|
-
$ vestauth agent curl https://api.vestauth.com/whoami
|
|
123
|
-
{"uid":"agent-4b94ccd425e939fac5016b6b",...}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
<details><summary>learn more</summary><br>
|
|
127
|
-
|
|
128
|
-
`vestauth agent curl` autosigns `curl` requests – injecting valid signed headers according to the [web-bot-auth draft](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture). You can peek these with the built-in `headers` primitive.
|
|
129
|
-
|
|
130
|
-
```sh
|
|
131
|
-
$ vestauth primitives headers GET https://api.vestauth.com/whoami --pp
|
|
132
|
-
{
|
|
133
|
-
"Signature": "sig1=:d4Id5SXhUExsf1XyruD8eBmlDtWzt/vezoCS+SKf0M8CxSkhKBtdHH7KkYyMN6E0hmxmNHsYus11u32nhvpWBQ==:",
|
|
134
|
-
"Signature-Input": "sig1=(\"@authority\");created=1770247189;keyid=\"B0u80Gw28W9U2Jl5t_EBiWeBajO2104kOYZ9Ikucl5I\";alg=\"ed25519\";expires=1770247489;nonce=\"NURxn28X7zyKJ9k5bHxuOyO5qdvF9L5s2qHmhTrGUzbwGSIoUCHmwSlwiiCRgTDGuum83yyWMHJU4jmrVI_XPg\";tag=\"web-bot-auth\"",
|
|
135
|
-
"Signature-Agent": "sig1=agent-4b94ccd425e939fac5016b6b.api.vestauth.com"
|
|
136
|
-
}
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
</details>
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
97
|
## Tools
|
|
144
98
|
|
|
145
99
|
> Call tools!
|
|
146
100
|
|
|
147
101
|
```sh
|
|
148
|
-
|
|
149
|
-
|
|
102
|
+
vestauth agent curl https://sfs.vestauth.com/write -d '{"filepath":"/hello.md", "content":"hello"}'
|
|
103
|
+
vestauth agent curl https://sfs.vestauth.com/list
|
|
150
104
|
```
|
|
151
105
|
|
|
152
|
-
#### First Party
|
|
106
|
+
#### First Party
|
|
153
107
|
|
|
154
108
|
<details><summary>`SFS` Simple File System</summary><br/>
|
|
155
109
|
|
|
156
110
|
> SFS is a simple file system for vestauth agents.
|
|
111
|
+
>
|
|
157
112
|
> [sfs.vestauth.com](https://sfs.vestauth.com)
|
|
158
113
|
|
|
159
114
|
```sh
|
|
@@ -173,10 +128,11 @@ vestauth agent curl https://sfs.vestauth.com/read -d '{"filepath":"/hello.md"}'
|
|
|
173
128
|
|
|
174
129
|
|
|
175
130
|
</details>
|
|
176
|
-
<details><summary>`
|
|
131
|
+
<details><summary>`GEO` geo.vestauth.com</summary><br/>
|
|
177
132
|
|
|
178
|
-
>
|
|
179
|
-
>
|
|
133
|
+
> GEO returns the current geo-coordinates of a vestauth agent.
|
|
134
|
+
>
|
|
135
|
+
> [geo.vestauth.com](https://geo.vestauth.com)
|
|
180
136
|
|
|
181
137
|
```sh
|
|
182
138
|
# make a ping
|
|
@@ -187,11 +143,12 @@ vestauth agent curl https://ping.vestauth.com/ping
|
|
|
187
143
|
|
|
188
144
|
</details>
|
|
189
145
|
|
|
190
|
-
#### Third Party
|
|
146
|
+
#### Third Party
|
|
191
147
|
|
|
192
148
|
<details><summary>`AS2` Agentic Secret Storage</summary><br/>
|
|
193
149
|
|
|
194
150
|
> AS2 is a simple, agent-friendly secret storage.
|
|
151
|
+
>
|
|
195
152
|
> [as2.dotenvx.com](https://as2.dotenvx.com)
|
|
196
153
|
|
|
197
154
|
```sh
|
|
@@ -214,15 +171,15 @@ vestauth agent curl "https://as2.dotenvx.com/get?key=KEY,TWILIO"
|
|
|
214
171
|
<details><summary>`Docle` Check if email address is real</summary><br>
|
|
215
172
|
|
|
216
173
|
> Check if an email address is real before you hit send. Verifies syntax, DNS, MX records, SMTP mailbox existence, and cross-references multiple providers. All in real time, no signup required.
|
|
217
|
-
>
|
|
218
|
-
> [
|
|
174
|
+
>
|
|
175
|
+
> [github.com/treadiehq/docle](https://github.com/treadiehq/docle)
|
|
219
176
|
|
|
220
177
|
```sh
|
|
221
178
|
# verify an email
|
|
222
179
|
vestauth agent curl https://docle.co/api/verify -d '{"emails":["test@example.com"]}'
|
|
223
180
|
|
|
224
181
|
# check your usage
|
|
225
|
-
vestauth agent curl https://docle.co/api/agent/usage
|
|
182
|
+
vestauth agent curl https://docle.co/api/agent/usage
|
|
226
183
|
```
|
|
227
184
|
|
|
228
185
|
|
|
@@ -238,12 +195,60 @@ vestauth agent curl https://docle.co/api/agent/usage -X GET
|
|
|
238
195
|
* Human-in-the-loop - coming
|
|
239
196
|
* Rotate NPM Tokens - coming
|
|
240
197
|
* Rotate GitHub Tokens - coming
|
|
241
|
-
* Working on a tool? Tell us and
|
|
198
|
+
* Working on a tool? Tell us and we'll list it.
|
|
242
199
|
|
|
243
200
|
</details>
|
|
244
201
|
|
|
245
202
|
|
|
246
203
|
|
|
204
|
+
## Authentication
|
|
205
|
+
|
|
206
|
+
> Build your own tools. Authenticate them with a single line of code – `vestauth.tool.verify`…
|
|
207
|
+
|
|
208
|
+
```js
|
|
209
|
+
...
|
|
210
|
+
const vestauth = require('vestauth')
|
|
211
|
+
|
|
212
|
+
app.post('/whoami', async (req, res) => {
|
|
213
|
+
try {
|
|
214
|
+
const url = `${req.protocol}://${req.get('host')}${req.originalUrl}`
|
|
215
|
+
const agent = await vestauth.tool.verify(req.method, url, req.headers)
|
|
216
|
+
|
|
217
|
+
res.json(agent)
|
|
218
|
+
} catch (err) {
|
|
219
|
+
res.status(401).json({ code: 401, error: { message: err.message }})
|
|
220
|
+
}
|
|
221
|
+
})
|
|
222
|
+
...
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
> …the agents sign HTTP requests with a drop-in curl wrapper.
|
|
226
|
+
|
|
227
|
+
```sh
|
|
228
|
+
> SIGNED - 200
|
|
229
|
+
$ vestauth agent curl https://api.vestauth.com/whoami
|
|
230
|
+
{"uid":"agent-4b94ccd425e939fac5016b6b",...}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
<details><summary>learn more</summary><br>
|
|
234
|
+
|
|
235
|
+
`vestauth agent curl` autosigns `curl` requests – injecting valid signed headers according to the [web-bot-auth draft](https://datatracker.ietf.org/doc/html/draft-meunier-web-bot-auth-architecture). You can peek these with the built-in `headers` primitive.
|
|
236
|
+
|
|
237
|
+
```sh
|
|
238
|
+
$ vestauth primitives headers GET https://api.vestauth.com/whoami --pp
|
|
239
|
+
{
|
|
240
|
+
"Signature": "sig1=:d4Id5SXhUExsf1XyruD8eBmlDtWzt/vezoCS+SKf0M8CxSkhKBtdHH7KkYyMN6E0hmxmNHsYus11u32nhvpWBQ==:",
|
|
241
|
+
"Signature-Input": "sig1=(\"@authority\");created=1770247189;keyid=\"B0u80Gw28W9U2Jl5t_EBiWeBajO2104kOYZ9Ikucl5I\";alg=\"ed25519\";expires=1770247489;nonce=\"NURxn28X7zyKJ9k5bHxuOyO5qdvF9L5s2qHmhTrGUzbwGSIoUCHmwSlwiiCRgTDGuum83yyWMHJU4jmrVI_XPg\";tag=\"web-bot-auth\"",
|
|
242
|
+
"Signature-Agent": "sig1=agent-4b94ccd425e939fac5016b6b.api.vestauth.com"
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
</details>
|
|
247
|
+
|
|
248
|
+
Vestauth handles usage, payments, and spam protection for your tool!
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
247
252
|
## Self-hosting
|
|
248
253
|
|
|
249
254
|
> Run your own Vestauth server.
|
package/package.json
CHANGED
package/src/server/index.js
CHANGED
|
@@ -105,7 +105,7 @@ app.get('/.well-known/http-message-signatures-directory', async (req, res) => {
|
|
|
105
105
|
return res.json({ keys })
|
|
106
106
|
})
|
|
107
107
|
|
|
108
|
-
app.
|
|
108
|
+
app.post('/whoami', async (req, res) => {
|
|
109
109
|
try {
|
|
110
110
|
const url = `${req.protocol}://${req.get('host')}${req.originalUrl}`
|
|
111
111
|
const attrs = {
|