@getappz/agentflare-win32-x64 1.6.0 → 1.8.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 +163 -56
- package/bin/agentflare.exe +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
**A single Rust binary, no Node, no runtime dependencies — across Claude Code,
|
|
13
13
|
Codex, Cursor, Windsurf, VS Code, Cline, and Continue.**
|
|
14
14
|
|
|
15
|
-
[](LICENSE)
|
|
16
16
|
[](STATUS.md)
|
|
17
17
|
|
|
18
18
|
</div>
|
|
@@ -22,9 +22,10 @@ Codex, Cursor, Windsurf, VS Code, Cline, and Continue.**
|
|
|
22
22
|
## Status: Beta
|
|
23
23
|
|
|
24
24
|
agentflare is under active development. The optimization layer (lean-ctx
|
|
25
|
-
integration, memory,
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
integration, memory, `optimize output`/`code`/`context` and the always-on
|
|
26
|
+
runtime layer) is the most mature part — CI-gated, tested, in daily use. The
|
|
27
|
+
multi-agent coordination layer (tasks, review, coaching, artifacts, handoffs,
|
|
28
|
+
daemon, `work`) is newer and still finding its shape: CLI flags, MCP tool
|
|
28
29
|
names, and on-disk formats there can change without a major version bump.
|
|
29
30
|
|
|
30
31
|
See **[STATUS.md](STATUS.md)** for what's stable vs. still moving, before you
|
|
@@ -41,8 +42,14 @@ agent session.
|
|
|
41
42
|
|---|---|---|
|
|
42
43
|
| **lean-ctx** | tool I/O *within* a session — reads, shell output, search, up to 99% | [yvgude/lean-ctx](https://github.com/yvgude/lean-ctx) |
|
|
43
44
|
| **memory** (built-in) | knowledge *across* sessions — decisions, facts, preferences that survive a session ending | ships in the binary, SQLite + FTS5, no separate install |
|
|
44
|
-
|
|
|
45
|
-
|
|
|
45
|
+
| **`agentflare optimize output`** (formerly Caveman) | opt-in markdown prose compression, ~65% in published Claude Code benchmarks | built into the binary |
|
|
46
|
+
| **`agentflare optimize code`** (formerly Ponytail) | code-writing minimalism, hooked into Claude Code and Codex | built into the binary |
|
|
47
|
+
| **`agentflare optimize context`** | on-demand BM25/FTS5 relevance scoring over a session transcript (`optimize context score`). The `PreCompact` hook is wired for upgrade compatibility but inert: Claude Code's `PreCompact` accepts no injected context, so compaction survival is left to lean-ctx | built into the binary |
|
|
48
|
+
| **`agentflare optimize retrieve`** | reversible-compression retrieve (CCR) — pulls back the original, full-fidelity content that output/context compression replaced, when an agent actually needs it | built into the binary |
|
|
49
|
+
| **runtime layer** (always-on, no CLI surface) | automatic session hygiene and model-routing nudges, surfaced via hooks | built into the binary |
|
|
50
|
+
|
|
51
|
+
`agentflare optimize` also answers to its legacy alias `agentflare flare` (and `opt`) for
|
|
52
|
+
backward compat with earlier install scripts.
|
|
46
53
|
|
|
47
54
|
**2. Coordination** — a lightweight, local-first backend for running *more than
|
|
48
55
|
one* agent (or agent session) against the same body of work, exposed as MCP
|
|
@@ -51,14 +58,32 @@ tools any MCP-capable agent can call:
|
|
|
51
58
|
| Capability | What it's for |
|
|
52
59
|
|---|---|
|
|
53
60
|
| **Work items** (`item`, `claim`) | A shared backlog — create/list/search items, claim one before working it so two agents don't collide, mark done. |
|
|
54
|
-
| **
|
|
61
|
+
| **Autonomous work** (`work`) | Claim an item, provision a worktree, run a headless agent against it, and report back (comment + PR) — unattended, end to end. |
|
|
62
|
+
| **Review** (`review`) | Submit findings against a diff/PR; agentflare verifies each citation against the actual diff, dedups overlapping findings, and tags each CONFIRMED/UNIQUE/DISPUTED/UNVERIFIED. |
|
|
55
63
|
| **Artifacts** (`artifact`) | Publish specs, plans, and docs as versioned, shareable pages — a durable handoff surface between agents (and to you) instead of scratch files that vanish with the session. |
|
|
56
64
|
| **Handoff** (`handoff`) | Pass context to a specific agent/runtime, addressed and threaded, when work moves from one agent to another. |
|
|
57
|
-
| **Coaching** (`coaching` CLI + hook) | Small persistent nudges surfaced to an agent — at session start
|
|
58
|
-
| **
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
| **Coaching** (`coaching` CLI + hook) | Small persistent nudges surfaced to an agent — at session start, and via contextual triggers (BM25 relevance against the tool call/prompt) so a rule only shows up when it's actually relevant. |
|
|
66
|
+
| **Daemon** (`daemon`) | Background lifecycle for the coordination layer — PID file, flock lock, Unix socket/Windows named-pipe IPC, launchd/systemd autostart, cached update checks. |
|
|
67
|
+
| **Dashboard** (`serve`) | Read-only web dashboard over the same local-first store — boards, items, cost, claims — for a glance without an MCP client. |
|
|
68
|
+
| **Friction logging** (`vent`) | Append-only per-repo JSONL of tool/workflow friction as it happens; a classifier auto-files the actionable entries as backlog items. |
|
|
69
|
+
| **GitHub ops** (`flare_git` MCP tool, `git` CLI) | PRs, issues, releases, and workflow runs against GitHub — including a bounded `pr_wait` poll — on top of the branch-protection/provenance git shim. |
|
|
70
|
+
| **Skills** (`skill`) | Registry for `SKILL.md` playbooks — search (BM25), load, and eval, so an agent can pull in a project-specific procedure on demand. |
|
|
71
|
+
| **Auth vault** (`auth`, `vault`) | Encrypted credential storage for agent auth profiles (rotation, cooldown, health scoring); `vault` separately holds lightweight per-project secrets (unlock/lock/print-env). |
|
|
72
|
+
| **Global search** (`search` MCP tool) | One entrypoint across 17 sources — store, memory, code, web, social, news, GitHub, academic, datasets, websites, weather, financial, crypto, fx, indicators, YouTube, Bluesky. |
|
|
73
|
+
| **`@mention` references** | Inline `@I…`/`@A…`/`@search:…` references in tool output resolve across items, artifacts, and search results. |
|
|
74
|
+
| **Git-aware PATH shim** | Impersonates `git`; branch-protection policy resolves against the *target file's own repo*, not the host process's cwd, so a stray write can't land on `master`/`main` from the wrong worktree. |
|
|
75
|
+
| **Comments, labels, projects, webhooks, channel_send** | Threaded discussion on items, categorization, cross-project views, and outbound notifications (Telegram/Slack/Discord). |
|
|
76
|
+
|
|
77
|
+
A companion crate, `flare-proxy`, runs an Anthropic-compatible HTTP proxy in
|
|
78
|
+
front of alternate/free OpenAI-style providers — useful for routing an agent
|
|
79
|
+
through a different backend without changing its client code; it isn't wired
|
|
80
|
+
into `agentflare init` yet.
|
|
81
|
+
|
|
82
|
+
Everything above is local-first (SQLite-backed) and reachable over the same
|
|
83
|
+
stdio MCP transport agentflare already exposes for the optimization layer, with
|
|
84
|
+
no daemon required. The `daemon` and `serve` dashboard are opt-in — background
|
|
85
|
+
lifecycle and a read-only HTTP view over the same store, not requirements for
|
|
86
|
+
MCP tool use.
|
|
62
87
|
|
|
63
88
|
lean-ctx and the built-in memory aren't substitutes for each other — one saves
|
|
64
89
|
tokens inside a session, the other saves the re-explaining tax across sessions.
|
|
@@ -73,11 +98,9 @@ any machine that installed Claude Code without separately installing Node.
|
|
|
73
98
|
agentflare is a single static binary; the only runtime dependency is agentflare
|
|
74
99
|
itself.
|
|
75
100
|
|
|
76
|
-
**No plugin marketplace for Claude Code or Cursor** —
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
one exception: its hook system only activates through its plugin loader, so
|
|
80
|
-
that wiring ships as a small `.codex-plugin/` manifest instead.
|
|
101
|
+
**No plugin marketplace required for Claude Code, Codex, or Cursor** —
|
|
102
|
+
`agentflare init --agent X` writes hooks into the target's own settings file
|
|
103
|
+
(`~/.claude/settings.json`, `~/.codex/hooks.json`, or `.cursor/hooks.json`).
|
|
81
104
|
|
|
82
105
|
## Metrics
|
|
83
106
|
|
|
@@ -90,22 +113,22 @@ comparable benchmark suite yet (see [STATUS.md](STATUS.md)).
|
|
|
90
113
|
| Tool | Published claim | Methodology | Confidence |
|
|
91
114
|
|---|---|---|---|
|
|
92
115
|
| lean-ctx | 98.1% compression (`map` mode), 96.7% (`signatures`), ~99.99% cached re-read | CI-gated, reproducible via `lean-ctx benchmark report .`, measured on a 50-file repo with the GPT-4o tokenizer | High — real, reproducible, methodology named |
|
|
93
|
-
|
|
|
94
|
-
|
|
|
116
|
+
| `agentflare optimize output` | 65% avg output-token reduction (range 22–87%, 10 prompts) | Committed in `benchmarks/`/`evals/` — and its own docs flag the failure mode: ~1–1.5k input-token overhead per turn can make it net-negative on already-terse workloads (`docs/HONEST-NUMBERS.md`) | High — reproducible, unusually transparent about limits |
|
|
117
|
+
| `agentflare optimize code` | ~54% less code (94% ceiling on best task), ~20% cheaper, ~27% faster, 100% safe | 12 real feature tasks on a FastAPI+React repo, Haiku 4.5, n=4 — self-corrected an earlier overgeneralized single-shot figure | High — reproducible, self-corrected once already |
|
|
95
118
|
|
|
96
119
|
### Real usage, one live project
|
|
97
120
|
|
|
98
121
|
Not a demo — pulled live from the maintainer's own project while building this repo,
|
|
99
122
|
for a sense of scale. Not a controlled benchmark; one data point, your mileage varies.
|
|
100
123
|
|
|
101
|
-
```
|
|
102
|
-
lean-ctx
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
memory
|
|
124
|
+
```text
|
|
125
|
+
lean-ctx 34.2M tokens saved 92% compression $88.45 saved (lifetime; lean-ctx gain)
|
|
126
|
+
optimize output 1.16M tokens saved (~65%) (single session; via `agentflare cost`)
|
|
127
|
+
optimize code code-minimalism markers logged, no token figure (agentflare optimize code doesn't measure per-repo savings)
|
|
128
|
+
memory 2 sessions, 11 observations tracked, across 2 projects (agentflare memory sessions/search)
|
|
106
129
|
```
|
|
107
130
|
|
|
108
|
-
Check your own: `lean-ctx gain` ·
|
|
131
|
+
Check your own: `lean-ctx gain` · `agentflare cost` · `agentflare optimize code gain`/`debt` ·
|
|
109
132
|
`agentflare memory context`. Don't trust this table blindly either — re-run those commands yourself.
|
|
110
133
|
|
|
111
134
|
---
|
|
@@ -221,6 +244,7 @@ immediately, no separate confirm step.
|
|
|
221
244
|
|
|
222
245
|
```bash
|
|
223
246
|
agentflare init --agent claude-code # writes ~/.claude/settings.json hooks directly, no marketplace
|
|
247
|
+
agentflare init --agent codex # writes ~/.codex/hooks.json and registers the MCP server
|
|
224
248
|
agentflare init --agent cursor # writes .cursor/hooks.json directly, no marketplace
|
|
225
249
|
agentflare init --agent windsurf
|
|
226
250
|
agentflare init --agent vscode-copilot
|
|
@@ -228,14 +252,17 @@ agentflare init --agent cline
|
|
|
228
252
|
agentflare init --agent continue
|
|
229
253
|
```
|
|
230
254
|
|
|
231
|
-
|
|
232
|
-
plugin
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
255
|
+
Codex loads hooks from `~/.codex/hooks.json`; `init` wires the supported
|
|
256
|
+
agentflare lifecycle hooks there. The `.codex-plugin/` compatibility manifest
|
|
257
|
+
also supports packaging those hooks in a Codex plugin. Use one hook installation
|
|
258
|
+
path per machine so events do not run twice. In Codex, review the installed
|
|
259
|
+
hooks with `/hooks` and trust them before relying on them in interactive or
|
|
260
|
+
headless runs. Codex requires trust for non-managed hooks. After reviewing a
|
|
261
|
+
work item, `mcp__flare__review(action="submit", findings=[...])` records review
|
|
262
|
+
completion for the item gate; an empty findings list is valid when the review
|
|
263
|
+
found no issues. For verification, run tests through `mcp__lean_ctx__ctx_shell`:
|
|
264
|
+
Codex's native Bash hook omits the process exit status, so its result cannot
|
|
265
|
+
prove that a test passed.
|
|
239
266
|
|
|
240
267
|
Each run: writes rule files (if absent), installs lean-ctx (native `curl | sh`
|
|
241
268
|
or Homebrew installer) if missing, wires hooks/MCP where the host supports
|
|
@@ -243,6 +270,47 @@ it. Detection-first — already-satisfied components are skipped, nothing gets
|
|
|
243
270
|
clobbered. Persistent memory ships in the binary itself — nothing to install
|
|
244
271
|
for it.
|
|
245
272
|
|
|
273
|
+
## Inter-agent messaging
|
|
274
|
+
|
|
275
|
+
Live sessions (Claude Code, Codex, Cursor, daemon-dispatched jobs) and humans
|
|
276
|
+
exchange short messages through `agentflare.db`. Send from the MCP `message`
|
|
277
|
+
tool or the CLI; delivery lands in the recipient's context through its hooks
|
|
278
|
+
(or piggybacked on the next agentflare tool result on hosts without hooks).
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
agentflare message send <to> "text" [--marker important|status|fyi] [--reply-to <id>]
|
|
282
|
+
agentflare message list # live sessions: key, name, item, team, busy
|
|
283
|
+
agentflare message inbox # your unread mail
|
|
284
|
+
agentflare message history --to team:alpha [--after <id>] [--limit N]
|
|
285
|
+
agentflare message watch # stream your mailbox, one line each
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
Addresses: a session key or unique name (`message list`), `item:<id>`
|
|
289
|
+
(whoever works that item), `agent:<name>` (every live session of that agent),
|
|
290
|
+
`team:<name>` (every live session launched with `--team <name>`, except you),
|
|
291
|
+
or `*` (everyone).
|
|
292
|
+
|
|
293
|
+
Teams: `agentflare agents launch <agent> --team alpha --name pm` (or
|
|
294
|
+
`agentflare run <agent> --team alpha --name pm`) registers the session under
|
|
295
|
+
`team:alpha` and names it `pm`. A session that joins a team gets the last 10
|
|
296
|
+
`team:alpha` messages replayed at SessionStart, marked as history.
|
|
297
|
+
|
|
298
|
+
Markers decide *when* a message is pushed, never whether it is stored:
|
|
299
|
+
|
|
300
|
+
| Marker | SessionStart / PromptSubmit | PreToolUse (mid-turn) | Stop | inbox / watch / MCP piggyback |
|
|
301
|
+
|---|---|---|---|---|
|
|
302
|
+
| `important` (default) | deliver | deliver | block stop and deliver | yes |
|
|
303
|
+
| `status` | deliver | only once 3 or more are pending | block stop and deliver | yes |
|
|
304
|
+
| `fyi` | deliver | never | never blocks the stop | yes |
|
|
305
|
+
|
|
306
|
+
Codex runs sandboxed: let it write the message store by adding to
|
|
307
|
+
`~/.codex/config.toml`:
|
|
308
|
+
|
|
309
|
+
```toml
|
|
310
|
+
[sandbox_workspace_write]
|
|
311
|
+
writable_roots = ["~/.agentflare"]
|
|
312
|
+
```
|
|
313
|
+
|
|
246
314
|
## Docs-only fallback (Aider, other AGENTS.md readers)
|
|
247
315
|
|
|
248
316
|
```bash
|
|
@@ -255,25 +323,61 @@ curl -sL https://raw.githubusercontent.com/getappz/agentflare/master/AGENTS.md >
|
|
|
255
323
|
|
|
256
324
|
```
|
|
257
325
|
src/
|
|
258
|
-
├──
|
|
259
|
-
|
|
260
|
-
│
|
|
261
|
-
|
|
262
|
-
├──
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
├──
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
├──
|
|
272
|
-
│
|
|
273
|
-
├──
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
326
|
+
├── main.rs # clap CLI entrypoint, dispatch across the modules below
|
|
327
|
+
├── cli/ # one file per top-level subcommand (init, hook, optimize, work,
|
|
328
|
+
│ # vent, auth, vault, git, review, skill, memory, ...) — thin clap
|
|
329
|
+
│ # wiring; the real logic lives in the modules it calls into
|
|
330
|
+
├── mcp_server/ # one file per mcp__flare__* MCP tool (item, artifact, asset,
|
|
331
|
+
│ # claim, review, handoff, memory_tool, flare_git, flare_docs,
|
|
332
|
+
│ # search, skill, comment, builtin_tools, types) + tests/
|
|
333
|
+
├── optimize/ # the optimization layer:
|
|
334
|
+
│ # output.rs — agentflare optimize output (prose compression)
|
|
335
|
+
│ # code.rs — agentflare optimize code (code minimalism)
|
|
336
|
+
│ # context.rs — BM25/FTS5 session-transcript compaction
|
|
337
|
+
│ # retrieve.rs — reversible-compression retrieve (CCR)
|
|
338
|
+
│ # runtime.rs — always-on session-hygiene/model-routing nudges
|
|
339
|
+
├── coaching/ # session nudges: rule storage, CRUD, session-start +
|
|
340
|
+
│ # contextual BM25-triggered presentation
|
|
341
|
+
├── memory/ # built-in persistent memory (SQLite + FTS5): embeddings,
|
|
342
|
+
│ # search, sessions, relations, summaries
|
|
343
|
+
├── github/ # GitHub API client backing `flare_git`/`git` — actions,
|
|
344
|
+
│ # issues, pulls, releases, identity, auth
|
|
345
|
+
├── dashboard/ # `agentflare serve` read-only dashboard backend
|
|
346
|
+
│ # (pairs with the top-level dashboard/web static frontend)
|
|
347
|
+
├── vent/ # friction capture, auto-classification into backlog items
|
|
348
|
+
├── mentions/ # @mention inline reference parsing/resolution (@I/@A/@search)
|
|
349
|
+
├── ipc/ # daemon transport — Unix socket / Windows named pipe
|
|
350
|
+
├── dev_install/ # `agentflare dev-install` — build the current checkout,
|
|
351
|
+
│ # install over the running binary
|
|
352
|
+
├── update/ # self-update check + binary swap
|
|
353
|
+
├── ui/ # terminal UI helpers (spinner, cliclack prompts)
|
|
354
|
+
├── core/ # small shared primitives (codesigning helpers)
|
|
355
|
+
├── rule_text.rs # shared rule copy (Exa, git, lean-ctx usage) — paths.rs/state.rs
|
|
356
|
+
│ # moved to crates/agentflare-bin-lib
|
|
357
|
+
├── compact.rs # legacy FTS5/BM25 PreCompact scorer, superseded by
|
|
358
|
+
│ # optimize/context.rs but still wired into the hook path
|
|
359
|
+
├── claims.rs, review.rs # work-item claiming, review/consensus core logic
|
|
360
|
+
├── artifacts.rs, channels.rs # artifact publishing, outbound notifications core logic
|
|
361
|
+
├── auth.rs, auth_crypt.rs,
|
|
362
|
+
│ auth_db.rs, auth_runner.rs # auth-profile vault (credential rotation/health scoring)
|
|
363
|
+
├── vault.rs # lightweight per-project secrets vault (unlock/lock/env)
|
|
364
|
+
├── daemon.rs, daemon_autostart.rs,
|
|
365
|
+
│ daemon_client.rs # daemon lifecycle: PID file, flock, autostart, IPC client
|
|
366
|
+
├── mcp_server.rs, mcp_prompts.rs # MCP stdio server wiring, exposes mcp_server/* + native
|
|
367
|
+
│ # Claude Code slash commands for `/optimize*`
|
|
368
|
+
├── components.rs # registry: each entry checks + fixes itself, host-aware
|
|
369
|
+
├── init.rs # `agentflare init --agent X` — runs every component,
|
|
370
|
+
│ # wires hooks directly for claude-code/cursor
|
|
371
|
+
└── hook.rs # `agentflare hook session-start|prompt-submit|... --agent X`
|
|
372
|
+
|
|
373
|
+
crates/ # 28-member Cargo workspace: flare-code, flare-output, flare-search-kit,
|
|
374
|
+
# agentflare-store, agentflare-backend, agentflare-db-kit, agent-registry,
|
|
375
|
+
# skill-registry, gateway-registry, flare-docs, flare-git-core,
|
|
376
|
+
# flare-git-shim, agentflare-shim, agentflare-artifacts, agentflare-jobs,
|
|
377
|
+
# flare-proxy, flare-vault, agentflare-bin-lib, ...
|
|
378
|
+
dashboard/web/ # static frontend served by `agentflare serve`
|
|
379
|
+
.codex-plugin/ # optional Codex plugin compatibility manifest
|
|
380
|
+
hooks/ # Codex plugin lifecycle hooks
|
|
277
381
|
install.sh, install.ps1 # installers (checksum-verified download / local build)
|
|
278
382
|
.github/workflows/ # ci.yml (build+test), release.yml (cross-compile on tag)
|
|
279
383
|
```
|
|
@@ -285,7 +389,7 @@ Adding a new managed component means adding one entry to `components.rs` — nei
|
|
|
285
389
|
|
|
286
390
|
## What Gets Created
|
|
287
391
|
|
|
288
|
-
**Claude Code**: `~/.claude/rules/{exa,git,lean-ctx}.md`, `~/.claude/settings.json` hooks section, `~/.
|
|
392
|
+
**Claude Code**: `~/.claude/rules/{exa,git,lean-ctx}.md`, `~/.claude/settings.json` hooks section, `~/.agentflare/` (includes the built-in memory database and the optimize layer's own state — no more separate `~/.config/{caveman,ponytail}/` now that both are built into the binary).
|
|
289
393
|
|
|
290
394
|
**Codex**: project-local `AGENTS.md` (only if absent), `~/.agentflare/`.
|
|
291
395
|
|
|
@@ -302,13 +406,16 @@ Nothing is created if it already exists.
|
|
|
302
406
|
## Uninstall
|
|
303
407
|
|
|
304
408
|
Remove the binary (see Install section above), then remove whatever `init`
|
|
305
|
-
wrote for the hosts you set up — see "What Gets Created" above.
|
|
306
|
-
|
|
409
|
+
wrote for the hosts you set up — see "What Gets Created" above. `optimize
|
|
410
|
+
output`/`optimize code` are part of the same binary now — no longer separate
|
|
411
|
+
plugins — so there's nothing left to uninstall separately for them. If you
|
|
412
|
+
have a config left over from before they were absorbed, `agentflare uninstall`
|
|
413
|
+
also cleans up the legacy `~/.config/{caveman,ponytail}/config.json`.
|
|
307
414
|
|
|
308
415
|
---
|
|
309
416
|
|
|
310
417
|
<div align="center">
|
|
311
418
|
|
|
312
|
-
|
|
419
|
+
Apache License 2.0
|
|
313
420
|
|
|
314
421
|
</div>
|
package/bin/agentflare.exe
CHANGED
|
Binary file
|