Skip to main content

Local-first session journaling and integrity verification for AI-assisted development.

Project description

StartQ

StartQ is a local-first session journal for AI-assisted development. It saves concise session context, records decisions and actions, captures useful Git state, and verifies receipt integrity when the next session starts.

PyPI Python License

pip install startq

StartQ uses only the Python standard library at runtime.

The workflow

StartQ              AutoQ               EndQ
BOOT                 JOURNAL             SHUTDOWN

Verify receipts      Record actions      Save context
Load last summary    Track decisions     Capture Git state
Check local state    Search history      Capture transcript
Start daemons        Export records      Sign receipt

StartQ does not replace your model, IDE, or agent framework. It creates a small durable record around those tools so a fresh session has a trustworthy place to resume.

Quick start

startq init
startq boot

startq record "Connected the payment API" -t action
startq record "Use JWT instead of session cookies" -t decision
startq log

startq shutdown -c "Payment API complete; integration tests remain."

The next startq boot verifies the newest receipt and restores its context summary.

Commands

Command Purpose
startq init Create .startq/ and a local signing key
startq boot Verify recent state and load the last context summary
startq record "message" Append an activity to the session journal
startq log Read, search, summarize, or export journal entries
startq end -c "summary" Save a lightweight session receipt
startq shutdown -c "summary" Save a full receipt with Git and available transcript metadata
startq upgrade Configure an optional cloud Brain endpoint
startq status Show local session and cloud configuration status

Recording categories are note, action, decision, bug, milestone, and idea.

Local storage

.startq/
  brain/             Session receipts
  recordings/        Append-only daily JSONL journals
  sessions/          Captured chat transcripts, when available
  config.json        Non-secret configuration
  state.json         Initialization state

Add .startq/ to your project's ignore rules. It can contain private prompts, decisions, source context, and credentials.

Receipt integrity

StartQ 0.5 receipts use HMAC-SHA256 with a randomly generated 256-bit key stored in the current user's config directory, outside the workspace. On Linux and WSL this defaults to ~/.config/startq/keys/; on Windows it uses %LOCALAPPDATA%\\StartQ\\keys. On boot, StartQ verifies the receipt before restoring its context. A modified receipt is rejected.

Receipts from StartQ 0.4 and earlier used an unkeyed SHA-256 digest. They are blocked by default because accepting one silently would permit a downgrade attack. To migrate a receipt you trust, run startq boot --allow-legacy, review the warning and restored summary, then close the session to create a new HMAC receipt. An unkeyed digest can detect accidental changes, but it does not authenticate the writer.

The HMAC design protects against receipt edits by a process that cannot read the signing key. It does not protect against an administrator or compromised process that can read both the receipts and key. Set STARTQ_SIGNING_KEY_FILE to an explicitly managed key path when moving a brain between machines or accessing one workspace from both Windows and WSL. Losing the key makes new-format receipts unverifiable.

Transcript capture

startq shutdown can capture the most recent Antigravity IDE session when a supported local transcript is available. It stores a local text copy and includes its checksum and path in the receipt. StartQ boot restores the context summary; it does not inject the entire transcript into another model automatically.

Transcript capture reads local IDE state and may include sensitive prompts or source material. Review .startq/sessions/ before sharing or syncing it.

Optional cloud sync

startq upgrade --url https://your-brain.example.com
startq boot --cloud
startq shutdown -c "Session complete" --cloud

The API-key prompt does not echo. Keys are stored in the current user's config directory, not config.json or the workspace. Managed environments can set STARTQ_CLOUD_API_KEY instead. Set STARTQ_CLOUD_KEY_FILE to choose an explicit credential file. Passing --key remains supported for automation, but can expose the key in shell history or process listings.

The cloud endpoint is expected to implement the JSON operations documented by startq/cloud_brain.py. Cloud transport and server-side retention are controlled by that endpoint, not by StartQ.

Use as a library

from startq.autoq import SessionRecorder
from startq.brain import BrainManager

brain = BrainManager(".startq")
brain.init_brain()

recorder = SessionRecorder(".startq")
recorder.record("Selected PostgreSQL", category="decision")

brain.end_session("Database decision recorded")

See examples for custom storage and workflow patterns.

Development

python -m unittest discover -v
python -m build

See CONTRIBUTING.md and SECURITY.md.

StartQ is MIT licensed. Built by Phil Hills.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

startq-0.5.0.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

startq-0.5.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

Details for the file startq-0.5.0.tar.gz.

File metadata

  • Download URL: startq-0.5.0.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for startq-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3bf078f244a0c108e078b9a417024860d89af766d30ebcf5855152bb3b4ecf7c
MD5 1a91faf755c820d3a0864bf222266cd8
BLAKE2b-256 4d87cc79bbaef37553ed214a64d4c97c1c5c66b043866f29b8f1ac25baf025f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for startq-0.5.0.tar.gz:

Publisher: release.yml on Phil-Hills/startq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file startq-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: startq-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 22.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for startq-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e7142ad7debebd95c2360afeb3713bf55690a7dca2bdab4e84cf62c47c78b047
MD5 db09c5d0def3d647630b491625ae90a3
BLAKE2b-256 7d8d7dd060d12b59566ded634e3bf1b4f5d8d1b096c5b12e36093d9202b2b935

See more details on using hashes here.

Provenance

The following attestation bundles were made for startq-0.5.0-py3-none-any.whl:

Publisher: release.yml on Phil-Hills/startq

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page