chore: rename bulkgen to hokusai
All checks were successful
Continuous Integration / Build Package (push) Successful in 35s
Continuous Integration / Lint, Check & Test (push) Successful in 57s

This commit is contained in:
Konstantin Fickel 2026-02-20 17:08:12 +01:00
parent a28cc97aed
commit 4def49350e
Signed by: kfickel
GPG key ID: A793722F9933C1A5
32 changed files with 215 additions and 213 deletions

View file

@ -1,9 +1,11 @@
# bulkgen
# hokusai
A build tool for AI-generated artifacts. Define image and text targets in a YAML config, and bulkgen handles dependency resolution, incremental builds, and parallel execution.
A build tool for AI-generated artifacts. Define image and text targets in a YAML config, and hokusai handles dependency resolution, incremental builds, and parallel execution.
Uses [Mistral](https://mistral.ai) and [OpenAI](https://openai.com) for text generation, and [BlackForestLabs](https://blackforestlabs.ai) (FLUX) and [OpenAI](https://openai.com) for image generation.
The name Hokusai was chosen in honor of [Katsushika Hokusai](https://en.wikipedia.org/wiki/Hokusai), who produced over 30,000 paintings, sketches, woodblock prints, and images for picture books, many in larger series.
## Installation
Requires Python 3.13+.
@ -28,7 +30,7 @@ export BFL_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
```
2. Create a config file (e.g. `my-project.bulkgen.yaml`):
2. Create a config file (e.g. `my-project.hokusai.yaml`):
```yaml
defaults:
@ -51,12 +53,12 @@ targets:
3. Build:
```bash
bulkgen build
hokusai build
```
## Config format
The config file must be named `<anything>.bulkgen.yaml` and placed in your project directory. One config file per directory.
The config file must be named `<anything>.hokusai.yaml` and placed in your project directory. One config file per directory.
### Top-level fields
@ -127,7 +129,7 @@ targets:
- research-notes.md # depends on an existing file
```
bulkgen resolves dependencies automatically. If you build a single target, its transitive dependencies are included.
hokusai resolves dependencies automatically. If you build a single target, its transitive dependencies are included.
### Archiving previous outputs
@ -145,7 +147,7 @@ On each rebuild of `hero.png`, the previous file is archived as `archive/hero.01
## CLI
### `bulkgen build [target]`
### `hokusai build [target]`
Build all targets, or a specific target and its dependencies.
@ -153,11 +155,11 @@ Build all targets, or a specific target and its dependencies.
- Runs independent targets in parallel
- Continues building if a target fails (dependents of the failed target are skipped)
### `bulkgen clean`
### `hokusai clean`
Remove all generated target files and the build state file (`.bulkgen.state.yaml`). Input files are preserved.
Remove all generated target files and the build state file (`.hokusai.state.yaml`). Input files are preserved.
### `bulkgen graph`
### `hokusai graph`
Print the dependency graph showing build stages:
@ -171,7 +173,7 @@ Stage 1 (targets): variant.png, summary.md
## Incremental builds
bulkgen tracks the state of each build in `.bulkgen.state.yaml` (auto-generated, add to `.gitignore`). A target is rebuilt when any of these change:
hokusai tracks the state of each build in `.hokusai.state.yaml` (auto-generated, add to `.gitignore`). A target is rebuilt when any of these change:
- Input file contents (SHA-256 hash)
- Prompt text
@ -180,7 +182,7 @@ bulkgen tracks the state of each build in `.bulkgen.state.yaml` (auto-generated,
## Installation with Nix / home-manager
bulkgen provides a Nix flake with a home-manager module. Add the flake as an input and enable the module:
hokusai provides a Nix flake with a home-manager module. Add the flake as an input and enable the module:
```nix
# flake.nix
@ -188,17 +190,17 @@ bulkgen provides a Nix flake with a home-manager module. Add the flake as an inp
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager";
bulkgen.url = "github:kfickel/bulkgen"; # adjust to your actual repo URL
hokusai.url = "github:kfickel/hokusai"; # adjust to your actual repo URL
};
outputs = { nixpkgs, home-manager, bulkgen, ... }: {
outputs = { nixpkgs, home-manager, hokusai, ... }: {
# ... your existing config, then in homeConfigurations:
homeConfigurations."user" = home-manager.lib.homeManagerConfiguration {
# ...
modules = [
bulkgen.homeManagerModules.bulkgen
hokusai.homeManagerModules.hokusai
{
programs.bulkgen.enable = true;
programs.hokusai.enable = true;
}
];
};
@ -206,11 +208,11 @@ bulkgen provides a Nix flake with a home-manager module. Add the flake as an inp
}
```
This places the `bulkgen` binary on your `$PATH`. To use a different package build (e.g. from a different system or overlay), set `programs.bulkgen.package`.
This places the `hokusai` binary on your `$PATH`. To use a different package build (e.g. from a different system or overlay), set `programs.hokusai.package`.
The flake also exposes:
- `packages.<system>.bulkgen` — the standalone package, usable without home-manager (e.g. `nix run github:kfickel/bulkgen`)
- `packages.<system>.hokusai` — the standalone package, usable without home-manager (e.g. `nix run github:kfickel/hokusai`)
- `devShells.<system>.default` — development shell with all dependencies
## Environment variables