Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
1f2e373
Stabilize Phase 0 API contracts: /projects, /git/status, /ask sources
dporkka Jun 10, 2026
69f63e3
refactor(core): comprehensive codebase improvements - security, archi…
dporkka Jun 11, 2026
c9a2217
feat(contract): share one API contract across Go server and all clients
dporkka Jun 18, 2026
c07e6a2
docs: mark Phase 1 RAG consolidation and auto-index as complete
dporkka Jun 18, 2026
e3ea5cf
Merge origin/phase0-contract-stabilization; deduplicate SetAuthToken
dporkka Jun 28, 2026
12fc74d
Expose vector/hybrid search end-to-end
dporkka Jun 28, 2026
b9d315e
Improve token onboarding for local clients
dporkka Jun 28, 2026
fc18a40
fix(vector): wire hybrid search end-to-end across CLI, API, and clients
dporkka Jun 28, 2026
429f8b7
docs: refresh README and planning docs; desktop: vector/hybrid search…
dporkka Jun 28, 2026
d48b297
Merge branch 'main' into phase0-contract-stabilization
dporkka Jun 28, 2026
5f9daa4
feat(browser-extension): ask panel, recent notes, search filters, set…
dporkka Jun 28, 2026
758c44a
mobile: centralize sync, fix build config, add CI bundle step
dporkka Jun 28, 2026
62aef47
mobile: note detail, vector icons, safe-area handling
dporkka Jun 28, 2026
1931b0a
mobile: theme tokens, search UX, error boundary, offline sync, tests,…
dporkka Jun 28, 2026
3c7c57e
Merge branch 'main' into phase0-contract-stabilization
dporkka Jun 28, 2026
1ceef0f
fix: mobile crash, desktop bundle, embedded migrations, contract test…
dporkka Jun 29, 2026
8731494
feat: packaging, capture reliability, backlinks, RAG quality, actiona…
dporkka Jun 30, 2026
c85af0e
feat(mobile): today dashboard, backlinks, URL capture, task pills
dporkka Jun 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 91 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,17 @@ jobs:
run: go vet ./...
- name: go test
run: go test ./...
- name: go build
run: go build -o /tmp/agentvault ./cmd/agentvault
- name: Build CLI
working-directory: ${{ github.workspace }}
run: make build
- name: Smoke test CLI
working-directory: ${{ github.workspace }}
run: make smoke
- name: Upload CLI artifact
uses: actions/upload-artifact@v4
with:
name: agentvault-cli-linux-amd64
path: bin/agentvault

frontends:
name: Frontend (${{ matrix.app }})
Expand Down Expand Up @@ -55,7 +64,7 @@ jobs:
run: npm run build # runs `tsc && vite build`

mobile:
name: Mobile (Expo type-check)
name: Mobile (Expo type-check and bundle)
runs-on: ubuntu-latest
defaults:
run:
Expand All @@ -70,7 +79,9 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Type-check
run: npx tsc --noEmit
run: npm run typecheck
- name: Bundle iOS with Metro
run: npx expo export --platform ios

desktop:
name: Desktop (Wails build)
Expand Down Expand Up @@ -111,7 +122,11 @@ jobs:
- name: Install contract package dependencies
run: |
cd packages/contract
npm install --no-save typescript@5.4.5
npm ci
- name: Run contract tests
run: |
cd packages/contract
npm test
- name: Install app dependencies for type-check
run: |
(cd apps/web-local && npm ci)
Expand All @@ -120,3 +135,74 @@ jobs:
(cd apps/desktop-wails/frontend && npm ci)
- name: Run contract check
run: make contract-check

release:
name: Release
runs-on: ubuntu-latest
needs: [core, frontends, mobile, desktop, contract]
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-go@v5
with:
go-version: '1.23'
cache-dependency-path: core/go.sum

- uses: actions/setup-node@v4
with:
node-version: '20'
cache: npm
cache-dependency-path: |
apps/browser-extension/package-lock.json
apps/desktop-wails/frontend/package-lock.json

- name: Install browser extension dependencies
working-directory: apps/browser-extension
run: npm ci

- name: Build browser extension
working-directory: apps/browser-extension
run: npm run build

- name: Package browser extension
run: make package-extension

- name: Install desktop system libraries
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev

- name: Install Wails CLI
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest

- name: Add Go bin to PATH
run: echo "$(go env GOPATH)/bin" >> "$GITHUB_PATH"

- name: Build desktop app
run: make desktop

- name: Run GoReleaser
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: '~> v2'
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload browser extension release asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${GITHUB_REF_NAME}" dist/agentvault-extension-*.zip --clobber

- name: Upload desktop release asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh release upload "${GITHUB_REF_NAME}" apps/desktop-wails/build/bin/* --clobber
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ dist/
apps/desktop-wails/build/
apps/desktop-wails/desktop

# Expo local state and build output
.expo/
*.jks
*.p8
*.p12
*.key
*.mobileprovision
*.orig.*

# Dependencies
node_modules/

Expand Down
45 changes: 45 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
version: 2

project_name: agentvault

builds:
- id: agentvault
dir: core
main: ./cmd/agentvault
binary: agentvault
env:
- CGO_ENABLED=0
goos:
- linux
- darwin
- windows
goarch:
- amd64
- arm64
ldflags:
- -s -w -X main.version={{.Version}}
flags:
- -trimpath

archives:
- format: tar.gz
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
format_overrides:
- goos: windows
format: zip
files:
- README.md
- LICENSE

checksum:
name_template: checksums.txt

snapshot:
version_template: "{{ incpatch .Version }}-next"

changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
34 changes: 32 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
.PHONY: build test lint dev-core clean install help desktop desktop-dev contract-check contract-list-snake
.PHONY: build test lint dev-core clean install help desktop desktop-dev contract-check contract-list-snake smoke release release-snapshot package-extension

VAULT := ./test-vault
CORE := ./core
DESKTOP := ./apps/desktop-wails
# Ubuntu 24.04+/26.04 ship webkit2gtk 4.1 (not 4.0), so the desktop app needs this build tag.
WAILS_TAGS := webkit2_41
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
LDFLAGS := -X main.version=$(VERSION)

help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

build: ## Build the agentvault CLI binary
cd $(CORE) && go build -o ../bin/agentvault ./cmd/agentvault
cd $(CORE) && go build -ldflags "$(LDFLAGS)" -o ../bin/agentvault ./cmd/agentvault

test: ## Run all Go tests
cd $(CORE) && go test ./... -v
Expand All @@ -31,6 +33,12 @@ desktop-dev: ## Run the Wails desktop app in live-dev mode
clean: ## Remove build artifacts and test vault
rm -rf bin/
rm -rf $(VAULT)
rm -rf dist/
rm -rf $(CORE)/../apps/desktop-wails/build/
rm -rf $(CORE)/../apps/desktop-wails/frontend/dist/
rm -rf $(CORE)/../apps/web-local/dist/
rm -rf $(CORE)/../apps/browser-extension/dist/
rm -rf $(CORE)/../apps/mobile-expo/dist/

init-test: build ## Initialize a test vault
$(CORE)/../bin/agentvault init $(VAULT)
Expand All @@ -41,6 +49,28 @@ index-test: build ## Index the test vault
search-test: build ## Search the test vault
$(CORE)/../bin/agentvault search "test" --vault $(VAULT)

SMOKE_VAULT := /tmp/agentvault-smoke

smoke: build ## Smoke-test the built CLI binary
rm -rf $(SMOKE_VAULT)
$(CORE)/../bin/agentvault version
$(CORE)/../bin/agentvault init $(SMOKE_VAULT)
$(CORE)/../bin/agentvault index --vault $(SMOKE_VAULT)
$(CORE)/../bin/agentvault search "smoke" --vault $(SMOKE_VAULT)
$(CORE)/../bin/agentvault doctor --vault $(SMOKE_VAULT)

release-snapshot: ## Build release artifacts locally without publishing
goreleaser release --snapshot --clean --skip-publish

release: ## Create a release with GoReleaser (run on a tag)
goreleaser release --clean

package-extension: ## Build and zip the browser extension
cd apps/browser-extension && npm ci && npm run build
mkdir -p dist
rm -f dist/agentvault-extension-v$(VERSION).zip
cd apps/browser-extension/dist && zip -r ../../../dist/agentvault-extension-v$(VERSION).zip .

contract-check: ## Verify @agentvault/contract is the only source of API types in clients
@echo "Checking @agentvault/contract usage..."
@cd packages/contract && npx --yes -p typescript@5.4.5 tsc --noEmit
Expand Down
62 changes: 43 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,29 @@ AgentVault is an early application with a working Go core, CLI, local HTTP API,

Notable current gaps:

- Packaging, release artifacts, and installation paths are not yet defined.
- Desktop bundle size still triggers one Vite chunk-size warning on the `codemirror-vendor` chunk.
- Capture-sync state visibility and desktop auth status are not yet surfaced in the Wails app.
- Desktop bundle size still triggers one Vite chunk-size warning on the `codemirror-vendor` chunk; the warning is intentionally budgeted in `apps/desktop-wails/frontend/vite.config.ts`.
- Desktop app does not yet mirror the browser extension's capture-sync status.

Go verification runs locally with the toolchain on `PATH`; GitHub Actions is configured to run Go 1.23 tests, vet, and builds.

## Install

Install the AgentVault CLI with the install script:

```bash
curl -fsSL https://raw.githubusercontent.com/agentvault/agentvault/main/scripts/install.sh | sh
```

The script downloads the latest release for your platform from GitHub and installs `agentvault` into `$HOME/.local/bin`. Make sure that directory is on your `PATH`.

You can also download a pre-built binary manually from the [GitHub Releases](https://github.com/agentvault/agentvault/releases) page. Release archives follow the pattern:

```text
https://github.com/agentvault/agentvault/releases/download/v0.1.0/agentvault_v0.1.0_linux_amd64.tar.gz
```

Linux and macOS archives are `.tar.gz`; Windows archives are `.zip`. Extract the archive and place the `agentvault` binary (or `agentvault.exe` on Windows) somewhere on your `PATH`.

## Features

- **Local-first storage**: Durable Markdown files with YAML frontmatter.
Expand All @@ -37,31 +54,32 @@ Go verification runs locally with the toolchain on `PATH`; GitHub Actions is con
## Quick Start

```bash
# Build the CLI
cd core
go build -o ../bin/agentvault ./cmd/agentvault

# Initialize a vault
../bin/agentvault init ../my-vault
cd ../my-vault
agentvault init ./my-vault
cd ./my-vault

# Optional starter templates
../bin/agentvault init ../founder-vault --template founder
../bin/agentvault init ../developer-vault --template developer
agentvault init ./founder-vault --template founder
agentvault init ./developer-vault --template developer

# Create notes
../bin/agentvault new note --title "My first note"
../bin/agentvault new decision --project platform --title "Use Postgres"
../bin/agentvault new task --project platform --title "Build API"
agentvault new note --title "My first note"
agentvault new decision --project platform --title "Use Postgres"
agentvault new task --project platform --title "Build API"

# Index and search
../bin/agentvault index
../bin/agentvault search "Postgres"
agentvault index
agentvault search "Postgres"

# Validate
../bin/agentvault doctor
agentvault doctor

# Start the web app
agentvault serve
```

Running `agentvault serve` starts the local API at `http://127.0.0.1:47321` and opens it in your browser automatically. Use `agentvault serve --no-open` to skip opening the browser.

## CLI Reference

| Command | Description |
Expand Down Expand Up @@ -194,6 +212,7 @@ agentvault/
│ │ ├── chunker/ # Markdown/text chunking
│ │ ├── config/ # Vault configuration
│ │ ├── db/ # SQLite wrapper and migrations
│ │ │ └── migrations/001_init.sql
│ │ ├── doctor/ # Vault validation
│ │ ├── embeddings/ # Embedding clients
│ │ ├── git/ # Git CLI wrapper
Expand All @@ -206,7 +225,6 @@ agentvault/
│ │ ├── templates/ # Note and starter templates
│ │ ├── vault/ # Vault folder layout
│ │ └── vectors/ # Vector math
│ └── migrations/001_init.sql
├── apps/
│ ├── desktop-wails/ # Wails v2 desktop app
│ ├── web-local/ # React/Vite local web app
Expand All @@ -231,21 +249,27 @@ agentvault/
| Desktop | Wails v2 + React 18 + TypeScript |
| Web app | React 18 + Vite + TypeScript |
| Browser extension | Manifest V3 + React 18 + Vite |
| Mobile | Expo 51 + React Native 0.74 |
| Mobile | Expo 56 + React Native 0.85 |
| Editor | CodeMirror 6 |
| Styling | Tailwind CSS v3 |
| AI providers | Ollama, OpenAI-compatible, Anthropic, OpenRouter |
| Agent protocol | MCP |

## Development

### Build from source

```bash
# Go core
cd core
go test ./...
go vet ./...
go build -o ../bin/agentvault ./cmd/agentvault
```

### App builds

```bash
# Local web app
cd apps/web-local
npm ci
Expand Down
Loading
Loading