factorly 0.1.10 → 0.2.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/README.md +22 -16
- package/bin/factorly.js +5 -0
- package/install.js +8 -3
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -8,15 +8,17 @@
|
|
|
8
8
|
|
|
9
9
|
# Factorly
|
|
10
10
|
|
|
11
|
-
[](https://www.npmjs.com/package/factorly)
|
|
12
|
+
[](LICENSE)
|
|
13
13
|
[](https://modelcontextprotocol.io)
|
|
14
|
+
[](https://github.com/factorly-dev/factorly)
|
|
15
|
+
[](https://github.com/factorly-dev/factorly/tree/main/docs)
|
|
14
16
|
|
|
15
17
|
One command. All your tools. Credentials stay out of your agent's hands.
|
|
16
18
|
|
|
17
19
|
</center>
|
|
18
20
|
|
|
19
|
-
Factorly
|
|
21
|
+
Factorly is a local proxy between your AI agent and the tools it uses. Secrets stay in an encrypted vault. Every call is logged. Governance rules let you deny destructive operations, require approval for writes, rate-limit calls, and detect agent loops. REST APIs, CLI commands, and MCP servers — one config, one audit log, one set of rules.
|
|
20
22
|
|
|
21
23
|
## Install
|
|
22
24
|
|
|
@@ -24,23 +26,27 @@ Factorly sits between your AI agent and the tools it uses. Secrets stay in an en
|
|
|
24
26
|
npm install -g factorly
|
|
25
27
|
```
|
|
26
28
|
|
|
27
|
-
##
|
|
29
|
+
## Quick Start
|
|
28
30
|
|
|
29
31
|
```bash
|
|
30
|
-
#
|
|
31
|
-
factorly wrap -- npx @modelcontextprotocol/server-everything
|
|
32
|
-
|
|
33
|
-
# Or install a template for a service you use
|
|
32
|
+
# 1. Install a template (36 services: GitHub, Slack, Stripe, Linear, Gmail, ...)
|
|
34
33
|
factorly tools import templates github
|
|
35
|
-
|
|
34
|
+
|
|
35
|
+
# 2. Store your credentials in the encrypted vault
|
|
36
|
+
factorly vault set GITHUB_TOKEN ghp_xxxxxxxxxxxx
|
|
37
|
+
|
|
38
|
+
# 3. Connect to your agent (auto-detects Claude Code, Cursor, Codex)
|
|
39
|
+
factorly sync
|
|
36
40
|
```
|
|
37
41
|
|
|
38
|
-
|
|
42
|
+
The agent never sees your GitHub token. Factorly injected it, made the API call, logged it, and returned the data.
|
|
43
|
+
|
|
44
|
+
## Already Using an MCP Server?
|
|
45
|
+
|
|
46
|
+
Wrap it with Factorly — no config file needed, no changes to the server:
|
|
39
47
|
|
|
40
48
|
```bash
|
|
41
|
-
factorly
|
|
42
|
-
factorly vault set GITHUB_TOKEN ghp_xxx # store a secret
|
|
43
|
-
factorly sync # connect to Claude Code / Cursor
|
|
49
|
+
factorly wrap -- npx @modelcontextprotocol/server-github
|
|
44
50
|
```
|
|
45
51
|
|
|
46
52
|
## What You Get
|
|
@@ -49,7 +55,7 @@ factorly sync # connect to Claude Code / Cursor
|
|
|
49
55
|
- **Governance** — deny, confirm, rate limit, loop detection per tool
|
|
50
56
|
- **Audit log** — every call logged with params, response, and governance outcome
|
|
51
57
|
- **36 templates** — pre-built configs for GitHub, Slack, Stripe, Gmail, Linear, and more
|
|
52
|
-
- **Zero-config proxy** — `factorly wrap`
|
|
58
|
+
- **Zero-config proxy** — `factorly wrap` and `factorly exec` add safety instantly
|
|
53
59
|
|
|
54
60
|
## Supported Platforms
|
|
55
61
|
|
|
@@ -63,8 +69,8 @@ The npm package downloads the pre-built Go binary for your platform during insta
|
|
|
63
69
|
|
|
64
70
|
## Documentation
|
|
65
71
|
|
|
66
|
-
Full docs at [github.com/factorly-dev/factorly
|
|
72
|
+
Full docs at [github.com/factorly-dev/factorly](https://github.com/factorly-dev/factorly)
|
|
67
73
|
|
|
68
74
|
## License
|
|
69
75
|
|
|
70
|
-
|
|
76
|
+
GPL-3.0
|
package/bin/factorly.js
CHANGED
package/install.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Copyright 2026 Jordan Sherer <hi@jordansherer.com>
|
|
4
|
+
* SPDX-License-Identifier: gpl
|
|
5
|
+
*/
|
|
6
|
+
|
|
2
7
|
|
|
3
8
|
const https = require("https");
|
|
4
9
|
const http = require("http");
|
|
@@ -7,7 +12,7 @@ const path = require("path");
|
|
|
7
12
|
const { execSync } = require("child_process");
|
|
8
13
|
|
|
9
14
|
const VERSION = require("./package.json").version;
|
|
10
|
-
const REPO = "factorly-dev/factorly
|
|
15
|
+
const REPO = "factorly-dev/factorly";
|
|
11
16
|
const BIN_DIR = path.join(__dirname, "bin");
|
|
12
17
|
const BIN_PATH = path.join(BIN_DIR, process.platform === "win32" ? "factorly.exe" : "factorly");
|
|
13
18
|
|
|
@@ -96,7 +101,7 @@ install().catch((err) => {
|
|
|
96
101
|
console.error(` https://github.com/${REPO}/releases/tag/v${VERSION}`);
|
|
97
102
|
console.error("");
|
|
98
103
|
console.error("Or build from source:");
|
|
99
|
-
console.error(" git clone https://github.com/factorly-dev/factorly
|
|
100
|
-
console.error(" cd factorly
|
|
104
|
+
console.error(" git clone https://github.com/factorly-dev/factorly.git");
|
|
105
|
+
console.error(" cd factorly && make build");
|
|
101
106
|
process.exit(1);
|
|
102
107
|
});
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "factorly",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Your agent calls tools. Factorly holds the keys.",
|
|
5
|
-
"homepage": "https://github.com/factorly-dev/factorly
|
|
5
|
+
"homepage": "https://github.com/factorly-dev/factorly",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/factorly-dev/factorly
|
|
8
|
+
"url": "https://github.com/factorly-dev/factorly.git"
|
|
9
9
|
},
|
|
10
|
-
"license": "
|
|
10
|
+
"license": "GPL-3.0",
|
|
11
11
|
"bin": {
|
|
12
12
|
"factorly": "./bin/factorly.js"
|
|
13
13
|
},
|