Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
9167a27
checkpoint
michaelneale Oct 9, 2025
41463f5
experimental wrapper
michaelneale Oct 9, 2025
976d501
checkpoint
michaelneale Oct 15, 2025
a997a43
more robust script
michaelneale Oct 15, 2025
65f38bc
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 15, 2025
90a7d3e
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 16, 2025
c54176c
tiding up tunnel
michaelneale Oct 16, 2025
2f8bf81
merged in and tested
michaelneale Oct 18, 2025
b04a64b
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 20, 2025
75b8661
almost working
michaelneale Oct 21, 2025
73bbfe1
Merge branch 'main' into lapstone_tunnel
michaelneale Oct 21, 2025
294d232
health check and refreshing
michaelneale Oct 21, 2025
cdcfa51
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 21, 2025
8e9825e
better retry
michaelneale Oct 22, 2025
cbae968
signing builds and notarizing
michaelneale Oct 22, 2025
de4b7cf
checkpoint
michaelneale Oct 22, 2025
2109a9c
wording
michaelneale Oct 22, 2025
fee6eef
wording
michaelneale Oct 22, 2025
05bcd01
Merge branch 'micn/goose-mobile-access' into mobile-signing
michaelneale Oct 22, 2025
bb726e3
build now smarter
michaelneale Oct 22, 2025
8c6e9dd
expand by default
michaelneale Oct 23, 2025
15cd166
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 27, 2025
703424d
updating to main
michaelneale Oct 27, 2025
9ef6474
shouldn't overflow beyond window
michaelneale Oct 27, 2025
c234341
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 27, 2025
573fd10
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 29, 2025
7dc91d5
first cut at autostart and also cleanup
michaelneale Oct 30, 2025
5238ef1
remove slop
michaelneale Oct 30, 2025
9ad4c89
Merge branch 'main' into micn/goose-mobile-access
michaelneale Oct 30, 2025
ea2e77f
handle websocket errors
michaelneale Oct 31, 2025
10e4521
checkpoint
michaelneale Nov 3, 2025
bd62e83
remembers state now
michaelneale Nov 4, 2025
121d8ac
now working nicely
michaelneale Nov 4, 2025
2cfc61d
use a tunnel secret stored in standard place
michaelneale Nov 4, 2025
16b0b03
massive cleanup of old code, running from rust config
michaelneale Nov 4, 2025
fd9a06a
background
michaelneale Nov 4, 2025
a4d80a3
this slop is exhausting
michaelneale Nov 4, 2025
4495713
allow setting of tunnel url
michaelneale Nov 4, 2025
d7f8e2c
cleanup:
michaelneale Nov 4, 2025
2015119
better websocket recovery
michaelneale Nov 4, 2025
793a125
keep app running when tunnel is on automatically
michaelneale Nov 4, 2025
672886a
now works better with reconnection
michaelneale Nov 5, 2025
8991555
better restart of tunnel
michaelneale Nov 5, 2025
cb69ae7
cleanup
michaelneale Nov 5, 2025
ab3c4f5
wait for tunnel to start
michaelneale Nov 5, 2025
1611779
tidying up
michaelneale Nov 5, 2025
643ea0b
refactoring for smaller functions
michaelneale Nov 5, 2025
f4a3b59
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 6, 2025
e9ca916
copilot feedback addressed
michaelneale Nov 6, 2025
3990e87
cleanup
michaelneale Nov 6, 2025
70b1fb4
so much slop
michaelneale Nov 6, 2025
64033cd
more de-slop
michaelneale Nov 6, 2025
00bef21
not needed
michaelneale Nov 7, 2025
ce3f633
cleaning it up
michaelneale Nov 7, 2025
c1f3bb0
removing remnants of tailscale
michaelneale Nov 7, 2025
a3f0849
pass the port
michaelneale Nov 7, 2025
fb140c0
don't need to pull port out
michaelneale Nov 7, 2025
ae974fe
wording changes
michaelneale Nov 7, 2025
ae5e902
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 7, 2025
57d1d8d
nits
michaelneale Nov 7, 2025
c72bb8e
deleting code
michaelneale Nov 7, 2025
ed56e16
need this to give it a second to start
michaelneale Nov 7, 2025
d8b5787
new watchdog approach
michaelneale Nov 7, 2025
e558013
tested working on and off VPN
michaelneale Nov 7, 2025
a197628
fmt only
michaelneale Nov 7, 2025
a1f2e16
use socketref instead of platform specific and clean up tasks
michaelneale Nov 9, 2025
39171ef
updating to main
michaelneale Nov 11, 2025
a4ee386
tidy up
michaelneale Nov 11, 2025
c45d355
validate headers and don't need port
michaelneale Nov 11, 2025
fa5870f
tidy up
michaelneale Nov 11, 2025
4bd7264
note for pause
michaelneale Nov 11, 2025
932acb4
simplify
michaelneale Nov 11, 2025
34ba02f
load config lazy
michaelneale Nov 11, 2025
897fa13
cleaner
michaelneale Nov 12, 2025
76bf7cf
let GUI render
michaelneale Nov 12, 2025
d13c5d5
cleaning up openapi
michaelneale Nov 12, 2025
b7622d6
making build same as main
michaelneale Nov 12, 2025
5ebd7f3
working now
michaelneale Nov 12, 2025
83a4ad1
refactoring names
michaelneale Nov 13, 2025
f3ebc6b
clean up logging
michaelneale Nov 13, 2025
04cd39b
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 13, 2025
a47d2ab
feedback
michaelneale Nov 13, 2025
84a4a15
tunnel end to end test
michaelneale Nov 16, 2025
8203d9c
small tweaks
michaelneale Nov 17, 2025
7625780
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 17, 2025
d390d80
check timestamp
michaelneale Nov 17, 2025
74b2f6e
cleanup
michaelneale Nov 18, 2025
f434a5e
winreg from main
michaelneale Nov 18, 2025
97e710c
removing unused signing code and cleaning up from feedback
michaelneale Nov 19, 2025
c05a145
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 19, 2025
45e7476
allow disabling of tunnel similar to alpha flag
michaelneale Nov 20, 2025
28fefee
conflict fixing
michaelneale Nov 21, 2025
2ca7da3
cleanup
michaelneale Nov 21, 2025
6dbe7dc
fmt and forgot tests
michaelneale Nov 21, 2025
b37b6f9
lint
michaelneale Nov 21, 2025
3bb13cb
updated to main
michaelneale Nov 22, 2025
a5d56b7
tidy up tunnel control code
michaelneale Nov 22, 2025
4d8ef5c
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 24, 2025
eab6ddf
prepping for app
michaelneale Nov 24, 2025
50cb37d
Merge branch 'main' into micn/goose-mobile-access
michaelneale Nov 25, 2025
92c9247
dont' need sha for server
michaelneale Nov 25, 2025
d8c361b
live app link
michaelneale Nov 25, 2025
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
135 changes: 120 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion crates/goose-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,11 @@ reqwest = { version = "0.12.9", features = ["json", "rustls-tls", "blocking", "m
tokio-util = "0.7.15"
uuid = { version = "1.11", features = ["v4"] }
serde_path_to_error = "0.1.20"
winreg = { version = "0.55.0", optional = true }
tokio-tungstenite = { version = "0.28.0", features = ["native-tls"] }
url = "2.5.7"
rand = "0.9.2"
hex = "0.4.3"
socket2 = "0.6.1"

[target.'cfg(windows)'.dependencies]
winreg = { version = "0.55.0" }
Expand Down
7 changes: 6 additions & 1 deletion crates/goose-server/src/commands/agent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ pub async fn run() -> Result<()> {
.allow_methods(Any)
.allow_headers(Any);

let app = crate::routes::configure(app_state, secret_key.clone())
let app = crate::routes::configure(app_state.clone(), secret_key.clone())
.layer(middleware::from_fn_with_state(
secret_key.clone(),
check_token,
Expand All @@ -59,6 +59,11 @@ pub async fn run() -> Result<()> {
let listener = tokio::net::TcpListener::bind(settings.socket_addr()).await?;
info!("listening on {}", listener.local_addr()?);

let tunnel_manager = app_state.tunnel_manager.clone();
tokio::spawn(async move {
tunnel_manager.check_auto_start().await;
});

axum::serve(listener, app)
.with_graceful_shutdown(shutdown_signal())
.await?;
Expand Down
3 changes: 3 additions & 0 deletions crates/goose-server/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
pub mod auth;
pub mod configuration;
pub mod error;
pub mod openapi;
pub mod routes;
pub mod state;
pub mod tunnel;

// Re-export commonly used items
pub use openapi::*;
Expand Down
1 change: 1 addition & 0 deletions crates/goose-server/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ mod logging;
mod openapi;
mod routes;
mod state;
mod tunnel;

use clap::{Parser, Subcommand};
use goose::config::paths::Paths;
Expand Down
5 changes: 5 additions & 0 deletions crates/goose-server/src/openapi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,9 @@ derive_utoipa!(Icon as IconSchema);
super::routes::recipe::parse_recipe,
super::routes::setup::start_openrouter_setup,
super::routes::setup::start_tetrate_setup,
super::routes::tunnel::start_tunnel,
super::routes::tunnel::stop_tunnel,
super::routes::tunnel::get_tunnel_status,
),
components(schemas(
super::routes::config_management::UpsertConfigQuery,
Expand Down Expand Up @@ -513,6 +516,8 @@ derive_utoipa!(Icon as IconSchema);
super::routes::agent::AddExtensionRequest,
super::routes::agent::RemoveExtensionRequest,
super::routes::setup::SetupResponse,
super::tunnel::TunnelInfo,
super::tunnel::TunnelState,
))
)]
pub struct ApiDoc;
Expand Down
2 changes: 2 additions & 0 deletions crates/goose-server/src/routes/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ pub mod schedule;
pub mod session;
pub mod setup;
pub mod status;
pub mod tunnel;
pub mod utils;

use std::sync::Arc;
Expand All @@ -28,5 +29,6 @@ pub fn configure(state: Arc<crate::state::AppState>, secret_key: String) -> Rout
.merge(session::routes(state.clone()))
.merge(schedule::routes(state.clone()))
.merge(setup::routes(state.clone()))
.merge(tunnel::routes(state.clone()))
.merge(mcp_ui_proxy::routes(secret_key))
}
Loading
Loading