Nib, a GPLv3 fully local PDF tool (fill, sign, real redaction) in a single Go binary

I built this for myself because I’ve not found a PDF tool that does what I want, I’m not willing to pay for one, and I don’t like pushing my private info up to some random cloud service. I call it Nib. Figured this sub might be interested. GPLv3, runs entirely on your own machine.

The closest thing most people know is Stirling-PDF, which I like, but that’s a server you deploy and share. Nib is the opposite: a single cgo-free binary that opens like a desktop app. No Docker,no JVM, no upload.

Hit Detect and it finds the blanks (lines, boxes, checkboxes, “circle one”) and adds fields you can type into. It errs toward too many rather than too few, so you ignore the extra fields instead of hunting for misses. It fills existing form fields too, and you can type anywhere.

It saves your signature and logos so you reuse them. Draw it or upload a photo and it cleans up the background. Stored encrypted, unlocked by your SSH key (it’ll help you generate one if you don’t have it).

True redaction re-renders the page, so the text underneath is actually gone, not just covered.

It also does cryptographic signing with a timestamp if you need tamper-evidence, separate from the handwritten signature. Plus flatten and export, and the sidebar lets you reorder pages by dragging their thumbnails.

One Go binary (pdf.js, pdfcpu, pdfsign under the hood), Linux/macOS/Windows. GPLv3, looking for maintainers. Toggleable version check at startup, nothing else leaves the machine.

Me: systems admin/engineer of 30 years. Written with Claude Code (the app itself contains no AI).

So you used Claude as an IDE.
When you say “contains no AI” do you mean that all the code is hand coded by you?
or
Is there some code written by Claude?

I like the app. It does fill a gap in the pdf area.

in a way. I engineered it with Claude. I told Claude exactly what I wanted and how to go about doing it. I’m not a software developer, but I do know what I’m doing and Claude is way, way better at coding than I am. But the app itself is all golang. It doesn’t have any AI hooks built in. It doesn’t use Ollama or anything.

Glad you like it!

Thanks for the honest account.

I’m truly sorry, but I strictly reject the outcome of any vibe-coding projects. Period.

Unfortunately, as you all vibe-coded it, its legal status is quite complicated.

If you used the free AI, the AI company claims ownership (which is legally quite murky).

If you claim ownership, you need to figure out where all the source code came from the AI learned off and ask for permission to change the license - if at all possible.

Until such time, I don’t feel it’s fair or appropriate to post this as a “new” application and especially put a license on it such as the GPL v3.

Even if I had a need for an application like this, I still would not use it, because of its murky legal status. Perhaps someone put a license on some code which the AI was trained on proclaiming that all work of the user is now the software owner’s property. NO THANKS.

I had the same concern and it’s true of using the free version, but I am paying for a subscription due to job requirements. The interesting paragraph from their license follows. The applicable sentence is the last (bolded by me). Inputs are the prompts used, Outputs is the code generated.

Rights and Responsibilities. You are responsible for all Inputs you submit to our Services and all Actions. By submitting Inputs to our Services, you represent and warrant that you have all rights, licenses, and permissions that are necessary for us to process the Inputs under our Terms and to provide the Services to you, including for example, to integrate with third-party services, to share Materials with others at your direction, and to take Actions. You also represent and warrant that your submitting Inputs to us or directing Claude to take Actions will not violate our Terms, our Acceptable Use Policy, or any laws or regulations applicable to those Inputs or Actions. As between you and Anthropic, and to the extent permitted by applicable law, you retain any right, title, and interest that you have in the Inputs you submit. Subject to your compliance with our Terms, we assign to you all of our right, title, and interest—if any—in Outputs.

However, your post did make me go back and examine the licenses of the software used. I’ll be adding a Third Party License page to ensure I’m in complete compliance. Thanks!

Fair play. Fortunately or unfortunately, I think AI is going to touch all software (code at least) in the near future. The linux kernel itself is receiving patches generated by AI for issues found by AI. Like it or not, AI is here.

In my opinion, the least we can do with it, in the meantime, is free ourselves from the clutches of the software monopolies.

That, fortunately, doesn’t mean that I have to accept or join each hype that touches the software industry.

Agreed. But it does push you to consider whether your principled stand should also apply to Linux itself.

Does the licence issue only apply to code generated by Claude. ?
Where do we stand with code generated by other AI engines?

@xahodo says
“as you all vibe-coded it, its legal status is quite complicated”

Is that all AI or just Claude?
Does this legal position stem from the AI company’s user agreements, or is it some general court determination?

My response was regarding Claude Code only. I assume the other engines all have similar language but you would want to check for yourself. In particular, since I’m releasing Nib GPLv3, I have to ensure that the software stack used within, in Nib’s case, go and various libraries, are all permissive enough to be used in GPLv3. In most cases, they just require proper attribution which is where the Third Party License document comes into play.

It would have been simpler to code it yourself.
Most of the creative work in programming is in the planning , and you have done that. Coding is mechanical.
I dont know how these AI companies can write such agreements , or whether they are valid, because there is no creativity in what AI does , so how can there be a question of ownership?

It is like the difference between the architect and the builder … all credits go to the architect.

I’m not a software developer. I don’t know how to code.

AI is already far better at coding than humans and it’s only going to get better. If you find problems with code delivered by AI, then it is simply because the person who engineered it didn’t do that well.

But your point is taken, does the tool deserve any credit for the resultant work? Should the saw own the structure? That’s a legal question and not one I want to fight. I just know that Nib is free and clear. It is open source and looking for maintainers.

Robots are far better than humans at building motor cars.
Coding is a complex mechanical activity … it is OK to let these AI mental robots do it.
But dont let them design it. You did it right, retaining creative control.

Now that is another issue.
Who could maintain AI generated code ?
I think only AI could maintain it.
It could possibly be too sophisficated for any human brain .
Maybe Claude code should come with a maintenance plan? … ie Claude should remember how it was contructed and be able to alter it.

I got this from duck.ai

" AI Overview

Maintaining AI-generated code effectively relies on treating the AI as an assistant rather than a final author. Successful maintenance requires human ownership, rigorous automated testing, and strict architectural standards. [1, 2, 3, 4, 5]

  1. Establish Strict Ownership and Review
  • Human Ownership: Treat AI as the writer of a draft, not the final publisher. A designated engineer must “own” the code and fully understand the architectural intent behind it. [1, 2, 3, 4]
  • Iterative Prompting: Prevent “vibe coding” by asking the AI to refactor its own code iteratively (e.g., explicitly asking to add try/catch blocks or isolate concerns) rather than accepting the first output. [1, 2, 3]
  • Rigorous Peer Review: Treat AI-generated pull requests exactly like human ones. Human oversight is essential to catch edge cases, logic flaws, and repetitive “copy-paste” patterns. [1, 2]"

OMG! There is a difference between applying and testing AI-generated patches by highly experienced developers and plumbing together entirely new software by clueless individuals. BTW, doesn’t Linus himself watch over every amendment that comes to the kernel?

But to come to an end: You like it; I don’t. Peace!

I’ve been an engineer for over 30 years. I’m hardly clueless.

And so we see that your stand is not so principled.

Peace.

OK, I was afraid that the term “clueless individual” probably would be too harsh here. Please don’t take it (too) personally; we don’t know each other. English is not my primary language. Peace!

It’s all good!

At least you two know how to discuss without getting hot-headed.
I think there is an in-between solution. Some uses of AI are OK,some are not. Where the topic case falls I dont know, but I respect the way it was presented.