halleyfy 0.0.0-stage → 0.1.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 CHANGED
@@ -1,3 +1,97 @@
1
- # Temporary Holding Version
1
+ # halleyfy
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Images, video, voice, sound effects and music for AI agents, from one CLI.
4
+
5
+ halleyfy is a command-line tool built for agents: Claude Code, Codex, opencode, Cursor, Gemini CLI and anything else that can run a shell command. The agent writes the request. halleyfy picks the model, runs it and saves the file. You pay per result from a prepaid balance. There is no subscription and no model API key to set up.
6
+
7
+ ```bash
8
+ npm install -g halleyfy
9
+ halleyfy login
10
+ halleyfy topup 10
11
+ halleyfy image "a red ceramic mug on white marble, studio light"
12
+ ```
13
+
14
+ The last line saves a `.png` in the current folder and prints its path.
15
+
16
+ Docs: [halleyfy.com/docs](https://halleyfy.com/docs)
17
+
18
+ ## Install
19
+
20
+ ```bash
21
+ npm install -g halleyfy
22
+ ```
23
+
24
+ Or with Bun: `bun add -g halleyfy`. Or with no install at all: `npx -y halleyfy <command>`.
25
+
26
+ Add the agent skills with the [Skills CLI](https://skills.sh). They teach Claude Code, Codex, Cursor, opencode and other agents when and how to use halleyfy:
27
+
28
+ ```bash
29
+ npx skills add supasanahq/halleyfy-skills -g
30
+ ```
31
+
32
+ On macOS and Linux, one line installs the CLI and the skills without Node:
33
+
34
+ ```bash
35
+ curl -fsSL https://halleyfy.com/install.sh | sh
36
+ ```
37
+
38
+ ## What it makes
39
+
40
+ | Command | What you get |
41
+ |---|---|
42
+ | `halleyfy image` | Images from a prompt, or edits guided by up to 16 reference images. 1K to 4K, transparent PNGs too. |
43
+ | `halleyfy video` | A 3 to 15 second video with sound, 360p to 4K, from a prompt, a start image, references, or an edit of a clip. |
44
+ | `halleyfy speak` | Speech from text in one of 21 voices. |
45
+ | `halleyfy revoice` | The same words in another voice, with the same timing. |
46
+ | `halleyfy isolate` | A clean voice pulled out of a noisy recording. |
47
+ | `halleyfy sound` | A sound effect, or a whole soundtrack for a clip. |
48
+ | `halleyfy music` | An instrumental, a song, or a score fitted to a clip. |
49
+ | `halleyfy lipsync` | A video with the lips moved to a new line. |
50
+ | `halleyfy dub` | A video or recording in another language, each speaker in their own voice. |
51
+ | `halleyfy watch` | A transcript and contact sheets, so an agent can see and hear a video. |
52
+
53
+ ```bash
54
+ halleyfy video "a red mug slowly turning on white marble" --seconds 5
55
+ halleyfy speak "Welcome back. Your order is on its way." --voice George
56
+ halleyfy music "warm lo-fi hip hop, 80 bpm, soft keys and vinyl crackle"
57
+ halleyfy dub ./talk.mp4 --to de
58
+ ```
59
+
60
+ ## Built for agents
61
+
62
+ - `halleyfy <command> --help` lists every flag, its allowed values, its default and today's prices.
63
+ - `--dry-run` prints the price and runs nothing. `--max-cost 1` refuses a run above $1.
64
+ - `--json` prints one JSON document: `{"job", "files": [paths], "cost_usd", "target"}`.
65
+ - Exit codes: 0 done, 1 error, 2 a cost limit, 3 the job failed (nothing charged), 4 not enough balance.
66
+ - An agent can ask for a top-up, but only a person can approve one, in their browser.
67
+
68
+ The first real command installs the halleyfy skills for Claude Code, Codex and other agents (`~/.claude/skills` and `~/.agents/skills`). They teach an agent when to use halleyfy and how to write a prompt that comes out right the first time. To install them yourself:
69
+
70
+ ```bash
71
+ halleyfy skills install
72
+ ```
73
+
74
+ Then ask your agent in plain words:
75
+
76
+ > Use halleyfy to make a hero image for my landing page: a glass comet over a dark sea, left side empty for the headline.
77
+
78
+ To make an agent always reach for it, add this line to `AGENTS.md` or `CLAUDE.md`:
79
+
80
+ ```
81
+ To make images, videos, speech, sound effects or music, use the halleyfy CLI (`halleyfy image`, `halleyfy video`, `halleyfy speak`, `halleyfy sound`, `halleyfy music`); run `halleyfy <command> --help` first.
82
+ ```
83
+
84
+ ## Pricing
85
+
86
+ No subscription. Top up a balance by card, $10 to $500 at a time. Each result's price is shown before it runs and charged when it is delivered. A job that fails costs nothing. Today's prices are on [halleyfy.com](https://halleyfy.com) and in each command's `--help`.
87
+
88
+ ## Links
89
+
90
+ - [Quickstart](https://halleyfy.com/docs/quickstart)
91
+ - [For AI agents](https://halleyfy.com/docs/for-agents)
92
+ - [Claude Code](https://halleyfy.com/docs/claude-code), [Codex](https://halleyfy.com/docs/codex), [other agents](https://halleyfy.com/docs/other-agents)
93
+ - [CLI reference](https://halleyfy.com/docs/cli) and [REST API](https://halleyfy.com/docs/api)
94
+ - [Skills and plugins](https://github.com/supasanahq/halleyfy-skills)
95
+ - Support: support@halleyfy.com
96
+
97
+ Needs Node 18 or newer for the launcher. On Alpine, add `libstdc++` (`apk add libstdc++`).
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env node
2
+ // Launcher for the `halleyfy` npm package: runs the compiled binary from this platform's optional package.
3
+ const { spawnSync } = require("node:child_process");
4
+ const { isMusl, packageFor } = require("./select.cjs");
5
+
6
+ const pkg = packageFor(process.platform, process.arch, isMusl());
7
+ if (!pkg) {
8
+ console.error(`halleyfy has no build for ${process.platform}-${process.arch}.`);
9
+ process.exit(1);
10
+ }
11
+ const exe = process.platform === "win32" ? "halleyfy.exe" : "halleyfy";
12
+ let bin;
13
+ try {
14
+ bin = require.resolve(`${pkg}/bin/${exe}`);
15
+ } catch {
16
+ console.error(`halleyfy needs the ${pkg} package, which isn't installed. Reinstall without --omit=optional (or --no-optional).`);
17
+ process.exit(1);
18
+ }
19
+ const r = spawnSync(bin, process.argv.slice(2), { stdio: "inherit" });
20
+ if (r.error) {
21
+ console.error(`Couldn't run ${bin}: ${r.error.message}`);
22
+ process.exit(1);
23
+ }
24
+ if (r.signal) process.kill(process.pid, r.signal);
25
+ process.exit(r.status === null ? 1 : r.status);
package/bin/select.cjs ADDED
@@ -0,0 +1,25 @@
1
+ // Picks the platform package for this machine. Hand-written CommonJS (it ships as-is in the launcher
2
+ // package); platforms.test.ts checks it against TARGETS.
3
+ const fs = require("node:fs");
4
+
5
+ function isMusl() {
6
+ if (process.platform !== "linux") return false;
7
+ const report = process.report && process.report.getReport ? process.report.getReport() : null;
8
+ if (report && report.header) return !report.header.glibcVersionRuntime;
9
+ try {
10
+ return fs.readdirSync("/lib").some((f) => f.startsWith("ld-musl-"));
11
+ } catch {
12
+ return false;
13
+ }
14
+ }
15
+
16
+ function packageFor(platform, arch, musl) {
17
+ const cpu = arch === "x64" || arch === "arm64" ? arch : null;
18
+ if (!cpu) return null;
19
+ if (platform === "darwin") return `@halleyfy/cli-darwin-${cpu}`;
20
+ if (platform === "win32") return cpu === "x64" ? "@halleyfy/cli-windows-x64" : null;
21
+ if (platform === "linux") return `@halleyfy/cli-linux-${cpu}${musl ? "-musl" : ""}`;
22
+ return null;
23
+ }
24
+
25
+ module.exports = { isMusl, packageFor };
package/package.json CHANGED
@@ -1,6 +1,55 @@
1
1
  {
2
2
  "name": "halleyfy",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.1",
4
+ "description": "Images, video, voice, sound effects and music for AI agents, from one CLI. Works with Claude Code, Codex and any agent that can run a shell command. Pay per result.",
5
+ "keywords": [
6
+ "ai",
7
+ "ai-agents",
8
+ "agent-skills",
9
+ "cli",
10
+ "claude-code",
11
+ "codex",
12
+ "cursor",
13
+ "opencode",
14
+ "generative-ai",
15
+ "image-generation",
16
+ "text-to-image",
17
+ "image-editing",
18
+ "video-generation",
19
+ "text-to-video",
20
+ "image-to-video",
21
+ "text-to-speech",
22
+ "tts",
23
+ "voiceover",
24
+ "music-generation",
25
+ "sound-effects",
26
+ "lip-sync",
27
+ "dubbing",
28
+ "content-creation"
29
+ ],
30
+ "homepage": "https://halleyfy.com",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/supasanahq/halleyfy-skills.git"
34
+ },
35
+ "bugs": {
36
+ "url": "https://github.com/supasanahq/halleyfy-skills/issues",
37
+ "email": "support@halleyfy.com"
38
+ },
39
+ "bin": {
40
+ "halleyfy": "bin/halleyfy.cjs"
41
+ },
42
+ "optionalDependencies": {
43
+ "@halleyfy/cli-darwin-arm64": "0.1.1",
44
+ "@halleyfy/cli-darwin-x64": "0.1.1",
45
+ "@halleyfy/cli-linux-x64": "0.1.1",
46
+ "@halleyfy/cli-linux-arm64": "0.1.1",
47
+ "@halleyfy/cli-linux-x64-musl": "0.1.1",
48
+ "@halleyfy/cli-linux-arm64-musl": "0.1.1",
49
+ "@halleyfy/cli-windows-x64": "0.1.1"
50
+ },
51
+ "engines": {
52
+ "node": ">=18"
53
+ },
54
+ "license": "UNLICENSED"
55
+ }