01Introduction #
InkCalc is a calculation note. Unlike a single-shot scratchpad, it stores notes in folders of .inkcalc files so you can return to the same household budget, mortgage scenario, or trip estimate over time.
- One expression per line. Newlines separate statements. Empty lines and comments don't affect results.
- Results appear on the right. The overlay is read-only — copying the source never picks up the results.
- Plain text files. Notes live on disk as
.inkcalcfiles you can open in Finder. - AI is opt-in. AI features only run when you trigger them. Turn them off in Settings and the app makes zero outbound calls.
macOS 13 Ventura or later. Apple Silicon and Intel both supported. Apple Intelligence requires a compatible Mac.
02Quick start #
Type these four lines into a fresh note. Results appear instantly to the right.
# Monthly comms
mobile = 85
internet = 65
mobile + internet # → 150
(mobile + internet) * 12 # → 1,800
Lines starting with # or // are comments. x = ... declares a variable that you can reuse below. That alone turns a calculator into a re-runnable note.
The five-second workflow
- Click + at the bottom of the sidebar to add a note.
- Type one expression per line. Enter advances.
- Read results on the right. Errors turn the row red.
- Need help?
⌘⇧Iwrites the expression,⌘⇧Ffixes the error,⌘⇧Msummarizes,⌘⇧Jinfers intent.
03Basics: notes & math side by side #
In InkCalc, each line is an independent expression. Every newline triggers re-evaluation, and the result lands in the right gutter. Blank lines and comments are kept for prose; they don't compute (but line numbers stay stable).
Three kinds of line
- Expression:
1 + 2,30km in mi. Result on the right. - Assignment:
x = 5. Stores the value for later lines. - Comment: starts with
#or//. Pure prose.
The right gutter
Results are rendered as a subtle overlay, so the file stays readable. Copying the text gives you the source you wrote — nothing more.
120 + 8%129.604Numbers, bases & bit ops #
Base literals
Hex, binary, and octal literals are first-class. Mixed-base expressions are evaluated normally; you can choose the display base later.
Bitwise operators
| Operator | Meaning | Example |
|---|---|---|
& | AND | 0xff & 0x0f → 15 |
| | OR | 0b1100 | 0b0011 → 15 |
xor | XOR | 0b1010 xor 0b0110 → 0b1100 |
<< / shl | Left shift | 1 << 8 → 256 |
>> / shr | Right shift | 256 >> 2 → 64 |
Base display
Convert the display base with in hex / in binary / in dec.
255 in hex # → 0xff
10 in binary # → 0b1010
0xff in dec # → 255
0b1101 in hex # → 0xd
05Operators & precedence #
Precedence matches standard math, with natural-language keywords layered on top. From lowest to highest:
| Level | Operators / keywords | Used for |
|---|---|---|
| 1 (lowest) | in / to / as | Unit and base conversion |
| 2 | | | Bitwise OR |
| 3 | xor | Bitwise XOR |
| 4 | & | Bitwise AND |
| 5 | << >> shl shr | Shifts |
| 6 | + - | Additive |
| 7 | * / × ÷ mod | Multiplicative & modulo |
| 8 | of | 20% of 100 |
| 9 | ^ | Power (right-associative) |
| 10 | Unary - + | Sign |
| 11 (highest) | Unit / % | Postfix forms |
Full-width × / ÷ and the Unicode minus − (U+2212) are accepted everywhere the ASCII forms are, so non-Latin input methods don't trip you up.
06Units #
Attach a unit and the value becomes a quantity. Quantities in the same category convert automatically.
| Category | Units |
|---|---|
| Length | mm cm m km inch ft yd mi |
| Mass | mg g kg t lb oz |
| Time | ms s min h day week year |
| Data | bit byte KB MB GB TB KiB MiB GiB TiB |
| Volume | ml l gal cup pint |
| Temperature | C F K (°C / °F accepted) |
Conversion keywords
in, to, and as are interchangeable. Use whichever reads best.
5 km in miles # → 3.107 mi
1 kg as lb # → 2.2046 lb
2 GB to MB # → 2,000 MB
100 C in F # → 212 °F
30 min + 45 s # → 30.75 min
Data sizes distinguish decimal (KB/MB/GB) from binary (KiB/MiB/GiB) — handy when storage vs memory matters.
07Currency #
Currency works like any other unit. Exchange rates are fetched on launch and refreshed periodically, so conversions are live.
Supported currencies
Symbols & prefixes
$ € ¥ £ ₩ ₹ can be used inline. $200 means 200 USD.
100 USD in JPY # rate-dependent
$50 + €30 in JPY # cross-currency, normalized then summed
1500 JPY as USD # → ~9.85 USD
sum(100 USD, 50 EUR) in JPY
When offline, the last cached rate is used. Verify connectivity before critical calculations. A subscription provides reliable rate refresh.
08Percent #
The % postfix becomes a ratio at evaluation time, but it behaves intuitively: adds and subtracts as a delta, multiplies as a fraction. That lets you write tax and discount math in plain language.
| Pattern | Meaning | Example |
|---|---|---|
X + N% | X increased by N% | 1000 + 10% → 1100 |
X - N% | X decreased by N% | 1000 - 20% → 800 |
X * N% | N% of X | 200 * 15% → 30 |
N% of X | N% of X | 20% of 250 → 50 |
X / Y * 100% | Ratio as percent | 30 / 200 * 100% → 15% |
09Dates & time #
Literals
ISO dates (YYYY-MM-DD) plus English keywords.
Arithmetic
You can add or subtract a time quantity (days, weeks, year, …) to/from a date. Subtracting two dates yields a quantity in days.
2025-04-25 + 7 days # → 2025-05-02
today + 30 days # 30 days from today
2025-05-02 - 2025-04-25 # → 7 days
tomorrow - today # → 1 day
Renewal dates, deadlines, billing cycles — anything where you ask "what's the date X days from Y?".
10Functions & constants #
Constants
| Name | Value |
|---|---|
pi / π | π |
e | Euler's number |
tau | 2π |
Functions
| Category | Functions |
|---|---|
| Arithmetic | sqrt abs round floor ceil trunc sign |
| Exp / log | exp ln log log2 |
| Trig | sin cos tan asin acos atan |
| Stats (variadic) | sum min max avg |
sqrt(2) # → 1.4142
sin(pi / 2) # → 1
log(1000) # → 3
avg(85, 92, 78, 90) # → 86.25
Functions also apply to quantities (except units with offsets, like temperature). For example, round(1.7 kg) → 2 kg.
11Line refs & aggregates #
Reference other lines and your note becomes a lightweight spreadsheet.
Single refs
ans— result of the previous line.line1,line2, … — result of the given line number.
Range aggregates
"Aggregate every line above this one." Blank lines, comments, and the previous aggregate row are skipped automatically.
| Modifier | Meaning |
|---|---|
sum above | Sum of values above |
avg above | Average |
min above / max above | Min / max |
count above | Count |
total | Alias for sum above |
100 + 200 # → 300
ans * 1.1 # → 330
500 # → 500
sum above # → 1,130
avg above # → 376.7
12Variables & comments #
name = expression declares a variable. Re-assign at any point and lines below pick up the new value.
tax = 10%
price = 1980
price + price * tax # → 2,178
# Update the rate and the totals re-flow.
tax = 8%
price + price * tax # → 2,138.4
Comments
Anything after # or // on a line is a comment. Pairs especially well with intent inference (⌘⇧J) — a question-mark comment expands into a real expression.
# Total monthly comms? ← ⌘⇧J asks AI to fill in below
mobile + internet # AI inserts this row
13AI shortcuts #
InkCalc ships four AI shortcuts, all opt-in. Each sends only the minimum context required and runs only when you trigger it.
# …? comment, AI produces an aggregating expression underneath.⌘⇧I — Natural language → expression
Type plain language on a row and press ⌘⇧I. A sheet opens with the AI-built expression; Replace swaps it in, or close to keep your original.
Tokyo–Osaka shinkansen round trip × 4 people14000 * 2 * 4 = 112,000⌘⇧F — Fix the error
If a row goes red (e.g. (1 + 2 * 3), hit ⌘⇧F. AI proposes a corrected line with a side-by-side diff so you can apply with one click.
⌘⇧M — Summarize the note
Useful when notes get long. AI reads the source and computed results, then produces a sentence or three you can paste into a doc, chat, or daily log.
⌘⇧J — Infer intent
Write a question comment like # Total monthly comms? and press ⌘⇧J. AI scans the note, picks the relevant rows, and inserts an aggregating expression right under the question. You don't write the formula — the note answers itself.
Only the minimum required context is sent — never your filenames or other notes. See the privacy policy for details.
14Choosing an AI backend #
Three backends are available in Settings → AI. API keys are stored in the macOS Keychain.
| Backend | Where it runs | Setup | Pick when |
|---|---|---|---|
| Apple Intelligence (default) | On-device + Private Cloud Compute | No keys; compatible Mac required | You want minimal data egress / offline use |
| Anthropic Claude | Cloud API | Anthropic API key (Keychain) | Highest quality natural-language & Japanese |
| OpenAI ChatGPT | Cloud API | OpenAI API key (Keychain) | You already have OpenAI infrastructure |
Start with Apple Intelligence — no egress, fast on supported hardware. Switch to Claude or OpenAI when you need stronger language modeling.
15Workspace & iCloud #
Notes are stored as .inkcalc files under a workspace folder you choose. Local or iCloud Drive — both are fine.
First-time setup
- Open the sidebar folder picker → "Open workspace…".
- Pick any folder via the macOS open panel.
- Use + at the bottom of the sidebar to add notes inside it.
iCloud Drive sync
Point the workspace at an iCloud Drive folder and your notes follow you across Macs. InkCalc uses NSFileCoordinator + NSFilePresenter for safe concurrent writes and external-edit detection.
Editing the same file on two Macs at the same time can produce an iCloud conflict copy. InkCalc detects external changes and reloads, but it's safest to edit one device at a time.
17Export #
From the status bar you can export as Markdown or CSV. Markdown is great for reports, CSV for downstream spreadsheets.
Markdown
# Monthly comms
```
mobile = 85 # 85
internet = 65 # 65
mobile + internet # 150
(mobile + internet) * 12 # 1800
```
CSV
line,expression,result
1,"mobile = 85",85
2,"internet = 65",65
3,"mobile + internet",150
4,"(mobile + internet) * 12",1800
18Settings #
Open with InkCalc → Settings… or ⌘,.
Display
- Language: English / Japanese / system. Switches without restart.
- Font size: editor body size.
- Decimal places: precision of the result overlay.
- Theme: dark (additional themes planned).
Window
- Menu-bar mode
- Dock icon visibility
- Always-on-top
AI
- Backend: Apple Intelligence / Claude / OpenAI.
- API key: Keychain (Claude / OpenAI only).
- Enable AI: turn it off and the shortcuts make zero outbound calls.
19Subscription #
InkCalc is delivered as a subscription covering reliable FX rates, AI features, iCloud sync, and ongoing updates.
Buying
- The paywall appears on first launch or from Settings → Subscription.
- Pick "Start free trial" (if eligible) or "Subscribe".
- Confirm with your Apple ID via the StoreKit sheet.
Managing & cancelling
Use App Store → Subscriptions to manage or cancel at any time. Features stay enabled until the period ends, then the paywall takes over automatically.
Restoring
After reinstalling or migrating, tap Restore purchases on the paywall to reload your Apple ID's entitlement.
Localized pricing is shown on the paywall. Terms: Apple Standard EULA. Privacy: privacy policy.
20Keyboard reference #
| Keys | Action |
|---|---|
| ⌘N | New note |
| ⌘S | Save (autosave is on) |
| ⌘, | Open settings |
| ⌘⇧I | AI: natural language → expression |
| ⌘⇧F | AI: fix error |
| ⌘⇧M | AI: summarize |
| ⌘⇧J | AI: infer intent |
| ⌘W | Close window (hides in menu-bar mode) |
| ⌘Q | Quit InkCalc |
21FAQ #
Where are notes stored?
Under the workspace folder you picked, as .inkcalc plain-text files. You can open them in any editor and back them up like any other text file.
Do I have to use AI?
No. Every AI feature is opt-in; with AI disabled, the app makes no outbound calls. Units, currencies, bases, line refs — all the core features work without AI.
Are API keys safe?
Yes. Claude / OpenAI keys go into the macOS Keychain under the service name jp.inkcalc.app.ai. They never live in files or UserDefaults.
Can I use it without a subscription?
The App Store download is free and the paywall appears on first launch. Eligible Apple IDs can start a free trial.
Can I sync without iCloud?
Yes — point the workspace at a Dropbox / Google Drive / OneDrive folder. Conflict behavior depends on the service.
Is there an iPad / iPhone app?
Not yet. It's on the roadmap and prioritized highly.
How often are FX rates refreshed?
On launch and periodically while running. Offline, the last cached rate is used.
Is there a limit on variables?
No practical limit. Variables are scoped per note, so different notes don't interfere.
Reach out on X (@InkCalc) — feedback is genuinely welcome.