| status | draft |
|---|---|
| purpose | Entry point for anyone landing on the repo — what Indiana is and how to get it running. |
| goal | A newcomer reads only this file to install or try Indiana, then follows links into docs/ for depth. |
| approval | pending |
Tag lines with
::markers while reviewing agent output; Indiana monitors the repo, compiles each marker into a prompt, and exposes the bundle to agents via MCP or to humans via copy. Why and where this goes: docs/PURPOSE.md.
Requires Rust, Node.js, and npm. From the repository root:
make casablancaThis builds the local Indiana binary, installs Casablanca's npm dependencies, and
launches the Electron development app with that binary. No separate Indiana
install is needed. Work in the separate Casablanca window; http://localhost:5173
is only the renderer dev server and cannot use the Electron preload bridge. Stop
the app with Ctrl-C in the terminal.
make casablanca makes the local binary available for editor actions such as
Copy all. For live monitoring and agent jobs, start the daemon in another terminal:
make serveOn first launch, select a folder to open as a project.
After installing the Casablanca cask, open it from Finder or run:
open -a Casablancabrew tap niklasingvar/fmk-indiana
brew trust niklasingvar/fmk-indiana # Homebrew 6.x: once per tapMenubar app (bundles the daemon — nothing else to install):
brew install --cask indiana-menulet
xattr -dr com.apple.quarantine /Applications/Indiana.appEditor (depends on the indiana CLI for Copy-all; talks to whichever daemon is running):
brew install --cask indiana-casablanca
xattr -dr com.apple.quarantine /Applications/Casablanca.appCLI / daemon only, for terminal users:
brew install niklasingvar/fmk-indiana/indianaThe apps are unsigned, so macOS quarantines them on download. Strip the quarantine flag with the
xattrline after each cask install, or right-click the.app→ Open on first launch.brew install --cask --no-quarantineno longer works on Homebrew 6.x — see docs/DISTRO.md. Signing is the planned fix.
cargo build --release
mkdir -p ~/.local/bin
cp target/release/indiana ~/.local/bin/indianaAdd ~/.local/bin to your PATH if it isn't already.
Use this when you just want to see Indiana run without installing anything.
Terminal 1 — start the server (monitors nothing yet):
make serveTerminal 2 — make a fixture, select it, then read it:
make scratch
make add
# This creates tmp/indiana-test/.indiana/ with per-command prompt templates.
make scan
make copymake add tells the running server to monitor tmp/indiana-test; the server scans it immediately. make scan / make copy then read the server's live state.
Why this path:
- Uses the release profile, so behavior is close to production.
- Does not copy anything into
~/.local/bin. - Uses ignored
tmp/indiana-testinside this repo, so ID injection cannot touch real notes.
Verify:
indiana --version
indiana --helpTerminal 1 — start the server:
indiana serveTerminal 2:
mkdir -p tmp/indiana-test
printf '%s\n\n%s\n%s\n' \
'This line needs work ::fix tighten wording' \
'::action follow up on this' \
'Next block of context for the action.' \
> tmp/indiana-test/review.md
indiana add tmp/indiana-test
# This creates tmp/indiana-test/.indiana/ with per-command prompt templates.
indiana scan
indiana copyOne command builds the daemon, bundles it as the menulet's sidecar, and launches the menu-bar app:
make menuletcargo build --release— builds the daemon binary.- The binary is copied into the menulet's sidecar slot
(
MENULET/src-tauri/binaries/indiana-aarch64-apple-darwin). tauri devrunsnpm run ui:dev(Vite serves the panel onlocalhost:1420), waits for it, then compiles the Tauri Rust app.- The menu-bar tray icon appears; the menulet auto-starts the daemon (connect-or-spawn), so the status shows "Server running".
First run compiles the Tauri crate and takes a few minutes; later runs are fast. The terminal stays attached — Ctrl-C quits the session.
- Click the tray icon → panel → "Add folder" to select a directory to monitor
(run
make scratchfirst for a knowntmp/indiana-testfixture). - Click a folder to copy its compiled bundle; right-click to remove it.