obolos 0.0.0-stage → 1.2.0
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 +382 -0
- package/LICENSE +134 -0
- package/README.md +167 -2
- package/dist/cli.js +100 -0
- package/package.json +54 -4
- package/skills/obolos/SKILL.md +230 -0
- package/skills/obolos/agents/openai.yaml +4 -0
- package/skills/obolos/references/operations.md +72 -0
- package/skills/obolos/references/safety-and-execution.md +100 -0
- package/skills/obolos/references/sdk-surface.md +109 -0
- package/skills/obolos/references/tooling.md +83 -0
- package/skills/obolos/references/workflows.md +277 -0
package/README.md
CHANGED
|
@@ -1,3 +1,168 @@
|
|
|
1
|
-
#
|
|
1
|
+
# obolos CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
`obolos` is the command line for operating obolos companies. It speaks in business terms (shares,
|
|
4
|
+
dollars, dates, vesting schedules), asks when something is missing, prepares every change as a
|
|
5
|
+
reviewed run, and only sends with a key you own. It calls `@obolos/sdk` directly; there is no hosted
|
|
6
|
+
service in between.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
npm install --global obolos
|
|
12
|
+
obolos --help
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Inside this workspace:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm install --filter obolos...
|
|
19
|
+
pnpm --filter @obolos/sdk build
|
|
20
|
+
pnpm --filter obolos build
|
|
21
|
+
node cli/dist/cli.js --help
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Configure
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
export OBOLOS_RPC_URL=https://your-rpc.example # or --rpc-url
|
|
28
|
+
obolos login # connect this terminal as one of your agent wallets
|
|
29
|
+
obolos login --key # or sign in with your own key (OBOLOS_PRIVATE_KEY or --keystore)
|
|
30
|
+
obolos doctor --json # RPC, chain, deployments, key
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Pick the company once, like choosing a project:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
obolos companies # the companies your wallet holds a role in
|
|
37
|
+
obolos use '#3' # by factory id, or an address
|
|
38
|
+
obolos whoami # your roles there, or your agent wallet and its powers
|
|
39
|
+
obolos company show
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The selection lives in `./.obolos/config.json`; `--company <#id|address>` overrides it per command.
|
|
43
|
+
|
|
44
|
+
An agent wallet acts within the powers you give it on the Passport page: Read, Vote, Manage equity,
|
|
45
|
+
Raise and Create a company. Granting roles, upgrading the company and withdrawing from its treasury
|
|
46
|
+
take your own key (`obolos login --key`).
|
|
47
|
+
|
|
48
|
+
## Operate
|
|
49
|
+
|
|
50
|
+
Commands are noun-verb and take human units: shares `1,000`, money `250,000`, dates `2026-01-01`
|
|
51
|
+
or `now`, durations `4y`, `18m`, `90d`, vesting `4y/1y/monthly`. Examples:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
obolos shares issue --to 0xabc --shares 1,000 --document obolos://rooms/<room>/folders/<folder>/doc/<n>
|
|
55
|
+
obolos shares class create --name "Series A Preferred" --authorized 2,000,000
|
|
56
|
+
obolos vesting create --to 0xabc --shares 480,000 --start 2026-01-01 --vesting 4y/1y/monthly
|
|
57
|
+
obolos grant issue --type option --to 0xabc --shares 40,000 --vesting 4y/1y/monthly
|
|
58
|
+
obolos fundraise create --type safe --name Seed --target 2,000,000 --agreement bafy...
|
|
59
|
+
obolos transfer request --to 0xdef --shares 1,000
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`obolos <noun> --help` lists every verb and flag.
|
|
63
|
+
|
|
64
|
+
### When something is missing
|
|
65
|
+
|
|
66
|
+
A command that lacks a business input does not guess. It stops with exit code 6 and lists the
|
|
67
|
+
questions, each with the flag that answers it and, where there are choices, the options with the
|
|
68
|
+
default marked:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Create a share class needs a few answers first:
|
|
72
|
+
|
|
73
|
+
Which traits should the class have?
|
|
74
|
+
--traits standard Standard: 1x liquidation preference, 1 vote per share, no par value (default)
|
|
75
|
+
--traits non-voting Non-voting: 1x liquidation preference, no votes, no par value
|
|
76
|
+
--traits custom Custom: give liquidationPreference, votingWeight and parValue
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
With `--json` the same questions arrive on stderr under `error.code = "cli.needs_input"`.
|
|
80
|
+
|
|
81
|
+
### Review and send
|
|
82
|
+
|
|
83
|
+
Preparing never sends. Each write command runs the preflight (capability, authority, freeze,
|
|
84
|
+
simulation of the exact call as the actor, credit quote), writes a hash-verified run file under
|
|
85
|
+
`.obolos/runs/`, and prints the review block: summary, checks, warnings, the stages with the current
|
|
86
|
+
one marked and its stage hash, and the postconditions.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
obolos send .obolos/runs/shares.issue-1-c887e01e.json # confirms, then sends with your key
|
|
90
|
+
obolos status <run> # where a run stands
|
|
91
|
+
obolos resume <run> # continue an interrupted run
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Multi-step operations are one run: funding an escrow before a schedule, request then verdict then
|
|
95
|
+
finalize, room then round. `send` walks the stages it can and stops when a stage waits on time,
|
|
96
|
+
another party, or a verdict. Add `--send` to a command to send right after preparing (still asks
|
|
97
|
+
for confirmation unless `--yes`). A run file that was edited by hand is refused.
|
|
98
|
+
|
|
99
|
+
Run files contain private cross-stage state needed to resume. They are written owner-only (`0600`;
|
|
100
|
+
new run directories use `0700`) and should not be printed or attached. With `--json`, write
|
|
101
|
+
commands return a redacted `obolos-run-view/v1` containing workflow, check and stage statuses plus
|
|
102
|
+
the stage hash and private run-file path. Normalized inputs, private state, calldata and stage
|
|
103
|
+
outputs stay out of machine-readable logs.
|
|
104
|
+
|
|
105
|
+
### Confidential values
|
|
106
|
+
|
|
107
|
+
Amounts on vesting schedules, grants, valuations and financing terms are sealed before they go on
|
|
108
|
+
chain and only readable by the parties the protocol allows. Sealing needs only the acting wallet:
|
|
109
|
+
your key's, or the wallet your agent wallet works for after `obolos login`. Reading (`--reveal` on
|
|
110
|
+
`show` commands) needs your key, or Read for the agent wallet; verdict publishing needs your key.
|
|
111
|
+
|
|
112
|
+
## Agent skill
|
|
113
|
+
|
|
114
|
+
The `obolos` Agent Skill ships with this package and teaches a coding agent to drive these
|
|
115
|
+
commands: how to route a request, answer the questions a command asks, review a run before sending,
|
|
116
|
+
and never invent a business value.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
npm install -g obolos
|
|
120
|
+
obolos skills install # every agent detected in your home directory
|
|
121
|
+
obolos skills list # where it is installed, and whether each copy is current
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The skill always goes to `~/.agents/skills`, the cross-agent root that Codex, Cursor, Gemini CLI and
|
|
125
|
+
others read, plus the private directory of every agent found: Claude Code, Cursor, OpenCode, GitHub
|
|
126
|
+
Copilot and Factory Droid. Codex needs nothing extra: it reads the shared root, and `--agent codex`
|
|
127
|
+
(like `gemini`, `amp`, `cline`, `warp`) is a name for that same directory. Use `--agent <id...>` to
|
|
128
|
+
pick specific ones, `--project <path>` to install
|
|
129
|
+
into a repository (the shared root only, unless `--agent` names more), and `--replace` to back up a
|
|
130
|
+
locally edited copy before overwriting it. A reinstall of an unchanged copy does nothing.
|
|
131
|
+
|
|
132
|
+
Invoke it as `/obolos` in Claude Code or `$obolos` in Codex.
|
|
133
|
+
|
|
134
|
+
Claude Code can also take the skill as a plugin, which tracks the repo instead of a copied
|
|
135
|
+
directory. From a checkout of `equitylayer/services`:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
/plugin marketplace add equitylayer/services
|
|
139
|
+
/plugin install obolos@obolos
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The marketplace manifest lives at `.claude-plugin/marketplace.json` and points at this package;
|
|
143
|
+
`obolos skills install` stays the path for every other agent.
|
|
144
|
+
|
|
145
|
+
## Keys
|
|
146
|
+
|
|
147
|
+
The CLI never takes a private key as an argument. Use a dedicated environment variable or an
|
|
148
|
+
encrypted keystore:
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
export OBOLOS_PRIVATE_KEY=0x... # or --key-env NAME
|
|
152
|
+
export OBOLOS_KEYSTORE_PASSWORD='...'; obolos send <run> --keystore ./signer.json
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Keys, keystore passwords, confidential plaintext and session material never belong in flags, run
|
|
156
|
+
files, logs or agent conversations.
|
|
157
|
+
|
|
158
|
+
## Low-level access
|
|
159
|
+
|
|
160
|
+
`obolos sdk actions`, `obolos sdk read <module.method>`, `obolos sdk prepare <module.method>` and
|
|
161
|
+
`obolos sdk batch` expose the SDK client one builder at a time for integration work; builders that
|
|
162
|
+
need sealed confidential inputs are refused there and point to the matching command. `obolos decode
|
|
163
|
+
<revert-data>` decodes protocol errors.
|
|
164
|
+
|
|
165
|
+
## Exit codes
|
|
166
|
+
|
|
167
|
+
`0` done, `1` unexpected failure, `2` input or usage, `3` configuration, `4` preflight or simulation
|
|
168
|
+
failure, `5` send failure, `6` more input needed.
|