bee980605f
feat: add HTTPS/TLS server support via rustls
...
Add optional TLS support for the server using axum-server with the
tls-rustls feature. When --server-cert and --server-key are provided
(and tls feature is enabled), the server binds with TLS instead of
plain HTTP.
Changes:
- Add axum-server dependency with optional tls-rustls feature
- New 'tls' feature flag (independent of 'server')
- --server-cert/--server-key CLI args gated behind tls feature
- ServerConfig extended with cert_file/key_file fields
- Conditional TLS/HTTP binding in server mod.rs
- Fix PathBuf::to_str().unwrap() panic risk -> to_string_lossy()
- Update README.md and DESIGN.md with TLS documentation
2026-03-12 22:18:42 -03:00
c5529bedbf
feat: add client mode with streaming support
...
Add client mode enabling the keep CLI to connect to a remote keep
server over HTTP. Local plugins (compression, meta, filters) run on
the client; the server stores/retrieves binary blobs.
Architecture:
- Client save uses 3-thread streaming pipeline: reader thread (stdin
→ tee/stdout → hash → compress), OS pipe, streamer thread (pipe →
chunked HTTP POST). Memory usage is O(PIPESIZE) regardless of data
size.
- Server accepts compress=false, meta=false, decompress=false query
params for granular control of server-side processing.
- Streaming body handling on server via async channel → sync reader
bridge (ChannelReader).
Key additions:
- src/client.rs: KeepClient with post_stream() for chunked upload
- src/modes/client/: save, get, list, info, delete, diff, status
- --client-url / KEEP_CLIENT_URL configuration
- --client-password / KEEP_CLIENT_PASSWORD for auth
- os_pipe dependency for zero-copy pipe streaming
Co-Authored-By: andrew/openrouter/hunter-alpha <noreply@opencode.ai >
2026-03-12 18:01:36 -03:00
Andrew Phillips
fdeb5f7951
Ugh
2026-02-19 13:57:39 -04:00
Andrew Phillips
22cd07284b
fix: Resolve compilation errors for multiple definitions and parser issues
...
Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat >
2025-09-10 16:12:11 -03:00
Andrew Phillips
58b5c8187b
docs: Add Rustdoc for modules, functions, and structs
...
Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat >
2025-09-10 12:28:47 -03:00
Andrew Phillips
e14c85a5af
feat: Split out --status-plugins to show only plugin information
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-09-03 08:45:37 -03:00
Andrew Phillips
5afe2f6bc8
feat: Add --filters option to --get and parse filters early
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-09-03 07:42:28 -03:00
Andrew Phillips
4472f3db94
feat: add argument validation for delete mode
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-29 14:28:57 -03:00
Andrew Phillips
692a403a7e
fix: make id mandatory for delete and optional for get/info
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-29 14:24:19 -03:00
Andrew Phillips
8c40b4de28
feat: add required validation for ids_or_tags with info and delete flags
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-29 14:19:15 -03:00
Andrew Phillips
6b632ff244
fix: make ids_or_tags optional for non-required modes
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-29 14:18:50 -03:00
Andrew Phillips
7b518eb2e9
fix: make verbose field public in OptionsArgs
...
Co-authored-by: aider (openai/andrew/openrouter/google/gemini-2.5-pro) <aider@aider.chat >
2025-08-29 11:41:31 -03:00
Andrew Phillips
bc78075b1a
feat: add --generate-config mode to output default config
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-27 22:05:09 -03:00
Andrew Phillips
2e4cacaaba
feat: add derive_more for NumberOrString and ProgramWriter
...
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat >
2025-08-27 21:50:04 -03:00
Andrew Phillips
71b29d1def
chore: remove unused anyhow error import and server password fields
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-25 18:28:23 -03:00
Andrew Phillips
ad12b552a0
fix: remove unused KeyValue struct and related fields
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-25 18:27:49 -03:00
Andrew Phillips
f6454d94f3
refactor: remove unused code and fields
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-25 18:26:01 -03:00
Andrew Phillips
bc2ebaa314
fix: remove references to removed 'update' mode in argument definitions
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-18 20:16:47 -03:00
Andrew Phillips
3c6df7334a
refactor: remove update mode and related references
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-18 20:15:39 -03:00
Andrew Phillips
37b0d0e3b0
chore: remove --digest argument and $KEEP_DIGEST environment variable
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-18 09:50:23 -03:00
Andrew Phillips
1c6064fdb7
refactor: remove unused struct members and methods
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:32:11 -03:00
Andrew Phillips
a00952a377
fix: remove unused delete_item handler and add accessors for unused fields
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:29:32 -03:00
Andrew Phillips
dfd855f380
fix: make unused fields public and remove pub(crate) visibility
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:25:04 -03:00
Andrew Phillips
5e111e002a
style: make verbose fields private
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:23:53 -03:00
Andrew Phillips
3de5947d42
refactor: make unused fields and functions private
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:23:20 -03:00
Andrew Phillips
c3f4e03f33
refactor: remove unused fields and functions
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:22:59 -03:00
Andrew Phillips
ad1a7e44bc
fix: add missing FromStr trait import
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:22:25 -03:00
Andrew Phillips
969d30924b
fix: remove unused imports and make unused fields private
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-16 12:21:57 -03:00
Andrew Phillips
2764f16c20
feat: add support for salted password hash authentication
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-15 21:03:12 -03:00
Andrew Phillips
29ce003fa8
feat: implement server configuration with address and port options
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-15 17:55:13 -03:00
Andrew Phillips
067cba703b
feat: add config system with --config argument and priority-based configuration
...
Co-authored-by: aider (openai/andrew/openrouter/anthropic/claude-sonnet-4) <aider@aider.chat >
2025-08-15 16:31:57 -03:00
Andrew Phillips
2dfaed38b8
fix: implement FromStr for NumberOrString and KeyValue to fix clap parsing errors
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-14 17:03:55 -03:00
Andrew Phillips
6af1ac30df
fix: resolve import issues for Args and ProgramWriter in tests
...
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat >
2025-08-14 13:04:22 -03:00