From c07cb38627123422e90603bc79436db7d4f01bd3 Mon Sep 17 00:00:00 2001 From: Lucas Machado Date: Thu, 21 May 2026 20:26:51 +0200 Subject: [PATCH] feat: add branded AiGate dashboard --- .structlint.yaml | 10 + docs/aigate-demo.cast | 164 ++++++ docs/aigate-demo.gif | Bin 0 -> 190902 bytes docs/cast.yaml | 138 +++++ go.mod | 2 +- internal/web/handlers.go | 22 + internal/web/server.go | 177 ++++++ internal/web/static/app.js | 209 +++++++ internal/web/static/style.css | 731 ++++++++++++++++++++++++ internal/web/templates/layout.html.tmpl | 160 ++++++ main.go | 29 +- services/audit_service.go | 205 +++++++ services/audit_service_test.go | 41 ++ services/runner_service.go | 18 + 14 files changed, 1904 insertions(+), 2 deletions(-) create mode 100644 docs/aigate-demo.cast create mode 100644 docs/aigate-demo.gif create mode 100644 docs/cast.yaml create mode 100644 internal/web/handlers.go create mode 100644 internal/web/server.go create mode 100644 internal/web/static/app.js create mode 100644 internal/web/static/style.css create mode 100644 internal/web/templates/layout.html.tmpl create mode 100644 services/audit_service.go create mode 100644 services/audit_service_test.go diff --git a/.structlint.yaml b/.structlint.yaml index ffb9690..00c6edd 100644 --- a/.structlint.yaml +++ b/.structlint.yaml @@ -6,10 +6,13 @@ dir_structure: - "services/**" - "helpers/**" - "integration/**" + - "internal/**" - "docs/**" - "dist/**" - ".github/**" - ".claude/**" + - ".agents/**" + - ".codex/**" disallowedPaths: - "vendor/**" - "node_modules/**" @@ -36,9 +39,14 @@ file_naming_pattern: - "*.md" - "*.txt" - "*.png" + - "*.gif" - "*.jpg" - "*.svg" - "*.puml" + - "*.cast" + - "*.css" + - "*.js" + - "*.tmpl" - "README*" - "LICENSE*" - "CHANGELOG*" @@ -83,6 +91,8 @@ ignore: - ".idea" - ".vscode" - ".DS_Store" + - ".agents" + - ".codex" - "*.log" - "*.tmp" - "aigate" diff --git a/docs/aigate-demo.cast b/docs/aigate-demo.cast new file mode 100644 index 0000000..0d59e5a --- /dev/null +++ b/docs/aigate-demo.cast @@ -0,0 +1,164 @@ +{"version": 2, "width": 130, "height": 30, "timestamp": 1775685449, "idle_time_limit": 3.0, "env": {"SHELL": "/usr/bin/zsh", "TERM": "tmux-256color"}, "title": "aigate — sandbox AI agents in seconds"} +[0.011109, "o", "\u001b[H\u001b[J\u001b[3J"] +[0.515434, "o", "\u001b[2;36m# aigate — wrap any command in an OS-level sandbox for AI agents\u001b[0m\r\n"] +[2.316579, "o", "\u001b[2;36m# every example below uses the default rules from ~/.aigate/config.yaml\u001b[0m\r\n"] +[4.318677, "o", "\u001b[H\u001b[J\u001b[3J"] +[4.719883, "o", "\u001b[2;36m# 1) deny_exec — shell tools blocked even when installed on the host\u001b[0m\r\n"] +[6.121717, "o", "\u001b[1;32m$\u001b[0m a"] +[6.186953, "o", "i"] +[6.252542, "o", "g"] +[6.31701, "o", "a"] +[6.382896, "o", "t"] +[6.449218, "o", "e"] +[6.515163, "o", " "] +[6.581809, "o", "r"] +[6.635178, "o", "u"] +[6.687339, "o", "n"] +[6.74003, "o", " "] +[6.79346, "o", "-"] +[6.846505, "o", "-"] +[6.899489, "o", " "] +[6.952924, "o", "c"] +[7.006153, "o", "u"] +[7.059022, "o", "r"] +[7.112076, "o", "l"] +[7.164782, "o", " "] +[7.217827, "o", "h"] +[7.270647, "o", "t"] +[7.322659, "o", "t"] +[7.375458, "o", "p"] +[7.429369, "o", "s"] +[7.481472, "o", ":"] +[7.533275, "o", "/"] +[7.585457, "o", "/"] +[7.64712, "o", "a"] +[7.709539, "o", "p"] +[7.770963, "o", "i"] +[7.833362, "o", "."] +[7.894528, "o", "g"] +[7.95609, "o", "i"] +[8.018667, "o", "t"] +[8.079994, "o", "h"] +[8.142215, "o", "u"] +[8.203565, "o", "b"] +[8.267329, "o", "."] +[8.331411, "o", "c"] +[8.393408, "o", "o"] +[8.455442, "o", "m"] +[8.768926, "o", "\r\n"] +[8.772711, "o", "[aigate] sandbox active\r\n[aigate] deny_read: .env, .env.*, secrets/, credentials/, ~/.ssh/, *.pem, *.key, *.p12, ~/.aws/, ~/.gcloud/, ~/.kube/config, ~/.npmrc, ~/.pypirc, terraform.tfstate, *.tfvars\r\n[aigate] deny_exec: curl, wget, nc, ncat, netcat, ssh, scp, rsync, ftp, kubectl delete, kubectl exec\r\n[aigate] allow_net: api.anthropic.com, api.openai.com, api.github.com, registry.npmjs.org, proxy.golang.org (all other outbound connections will be blocked)\r\n[aigate] mask_stdout: openai, anthropic, aws_key, github, bearer; +1 custom pattern(s)\r\ncommand is blocked by deny rules: \"curl\" is in the deny_exec list\r\n"] +[12.277041, "o", "\u001b[H\u001b[J\u001b[3J"] +[12.678972, "o", "\u001b[2;36m# 2) deny_read — secrets are hidden from the sandboxed process\u001b[0m\r\n"] +[14.080608, "o", "\u001b[2;36m# first, what the host sees:\u001b[0m\r\n"] +[14.882601, "o", "\u001b[1;32m$\u001b[0m c"] +[14.92618, "o", "a"] +[14.969463, "o", "t"] +[15.012669, "o", " "] +[15.055577, "o", "."] +[15.098407, "o", "e"] +[15.141096, "o", "n"] +[15.183574, "o", "v"] +[15.477939, "o", "\r\n"] +[15.479518, "o", "OPENAI_API_KEY=sk-proj-fake-DEMO-key-1234567890\r\nDB_PASSWORD=hunter2\r\n"] +[17.681149, "o", "\u001b[2;36m# now from inside the sandbox:\u001b[0m\r\n"] +[18.482612, "o", "\u001b[1;32m$\u001b[0m "] +[18.482642, "o", "a"] +[18.542319, "o", "i"] +[18.602688, "o", "g"] +[18.658458, "o", "a"] +[18.713295, "o", "t"] +[18.768658, "o", "e"] +[18.823415, "o", " "] +[18.879534, "o", "r"] +[18.934989, "o", "u"] +[18.991067, "o", "n"] +[19.046959, "o", " "] +[19.103129, "o", "-"] +[19.159111, "o", "-"] +[19.215067, "o", " "] +[19.271536, "o", "c"] +[19.327361, "o", "a"] +[19.383821, "o", "t"] +[19.43905, "o", " "] +[19.494332, "o", "."] +[19.549987, "o", "e"] +[19.605914, "o", "n"] +[19.666133, "o", "v"] +[19.977953, "o", "\r\n"] +[19.980355, "o", "[aigate] sandbox active\r\n[aigate] deny_read: .env, .env.*, secrets/, credentials/, ~/.ssh/, *.pem, *.key, *.p12, ~/.aws/, ~/.gcloud/, ~/.kube/config, ~/.npmrc, ~/.pypirc, terraform.tfstate, *.tfvars\r\n[aigate] deny_exec: curl, wget, nc, ncat, netcat, ssh, scp, rsync, ftp, kubectl delete, kubectl exec\r\n[aigate] allow_net: api.anthropic.com, api.openai.com, api.github.com, registry.npmjs.org, proxy.golang.org (all other outbound connections will be blocked)\r\n[aigate] mask_stdout: openai, anthropic, aws_key, github, bearer; +1 custom pattern(s)\r\n"] +[19.980778, "o", "\u001b[90m\u001b[90m23:57:49\u001b[0m\u001b[0m \u001b[32mINFO \u001b[0m starting bwrap network-filtered sandbox \u001b[36mallow_net=\u001b[0m[\"api.anthropic.com\",\"api.openai.com\",\"api.github.com\",\"registry.npmjs.org\",\"proxy.golang.org\"] \u001b[36mdns_servers=\u001b[0m[\"1.1.1.1\",\"1.0.0.1\",\"1.1.1.1\",\"1.0.0.1\",\"8.8.8.8\"]\r\n"] +[20.475756, "o", "[aigate] access denied: this file is protected by sandbox policy. See /tmp/.aigate-policy for all active restrictions.\r\n"] +[24.496781, "o", "\u001b[H\u001b[J\u001b[3J"] +[24.898714, "o", "\u001b[2;36m# 3) mask_stdout — secrets that slip out are redacted on the way back\u001b[0m\r\n"] +[26.300264, "o", "\u001b[1;32m$\u001b[0m a"] +[26.346693, "o", "i"] +[26.393402, "o", "g"] +[26.439559, "o", "a"] +[26.48566, "o", "t"] +[26.531279, "o", "e"] +[26.577147, "o", " "] +[26.620166, "o", "r"] +[26.66312, "o", "u"] +[26.706201, "o", "n"] +[26.749177, "o", " "] +[26.792617, "o", "-"] +[26.836017, "o", "-"] +[26.878714, "o", " "] +[26.921408, "o", "p"] +[26.965167, "o", "r"] +[27.008495, "o", "i"] +[27.051596, "o", "n"] +[27.095046, "o", "t"] +[27.138411, "o", "f"] +[27.181549, "o", " "] +[27.224143, "o", "'"] +[27.267298, "o", "o"] +[27.310091, "o", "p"] +[27.353028, "o", "e"] +[27.395705, "o", "n"] +[27.438599, "o", "a"] +[27.480523, "o", "i"] +[27.522922, "o", " "] +[27.566044, "o", "k"] +[27.614399, "o", "e"] +[27.661275, "o", "y"] +[27.709589, "o", ":"] +[27.757745, "o", " "] +[27.806121, "o", "s"] +[27.853978, "o", "k"] +[27.902123, "o", "-"] +[27.951075, "o", "p"] +[27.999664, "o", "r"] +[28.047941, "o", "o"] +[28.096834, "o", "j"] +[28.1455, "o", "-"] +[28.193679, "o", "a"] +[28.242345, "o", "b"] +[28.290521, "o", "c"] +[28.338888, "o", "1"] +[28.386976, "o", "2"] +[28.434915, "o", "3"] +[28.482619, "o", "d"] +[28.530065, "o", "e"] +[28.579807, "o", "f"] +[28.646161, "o", "4"] +[28.713249, "o", "5"] +[28.780359, "o", "6"] +[28.84742, "o", "g"] +[28.915209, "o", "h"] +[28.982761, "o", "i"] +[29.049949, "o", "7"] +[29.117158, "o", "8"] +[29.184676, "o", "9"] +[29.250339, "o", "\\"] +[29.316657, "o", "n"] +[29.383747, "o", "'"] +[29.702308, "o", "\r\n"] +[29.705, "o", "[aigate] sandbox active\r\n[aigate] deny_read: .env, .env.*, secrets/, credentials/, ~/.ssh/, *.pem, *.key, *.p12, ~/.aws/, ~/.gcloud/, ~/.kube/config, ~/.npmrc, ~/.pypirc, terraform.tfstate, *.tfvars\r\n[aigate] deny_exec: curl, wget, nc, ncat, netcat, ssh, scp, rsync, ftp, kubectl delete, kubectl exec\r\n[aigate] allow_net: api.anthropic.com, api.openai.com, api.github.com, registry.npmjs.org, proxy.golang.org (all other outbound connections will be blocked)\r\n[aigate] mask_stdout: openai, anthropic, aws_key, github, bearer; +1 custom pattern(s)\r\n"] +[29.705258, "o", "\u001b[90m\u001b[90m23:57:59\u001b[0m\u001b[0m \u001b[32mINFO \u001b[0m starting bwrap network-filtered sandbox \u001b[36mallow_net=\u001b[0m[\"api.anthropic.com\",\"api.openai.com\",\"api.github.com\",\"registry.npmjs.org\",\"proxy.golang.org\"] \u001b[36mdns_servers=\u001b[0m[\"1.1.1.1\",\"1.0.0.1\",\"1.1.1.1\",\"1.0.0.1\",\"8.8.8.8\"]\r\n"] +[29.770698, "o", "openai key: sk-***\r\n"] +[33.795432, "o", "\u001b[H\u001b[J\u001b[3J"] +[34.197103, "o", "\u001b[2;36m# 4) wrap claude itself — the full interactive TUI works the same way\u001b[0m\r\n"] +[137.01605, "o", "\u001b[1;32m$\u001b[0m aigate run -- claude\r\n"] +[137.020615, "o", "[aigate] sandbox active\r\n[aigate] deny_read: .env, .env.*, secrets/, credentials/, ~/.ssh/, *.pem, *.key, *.p12, ~/.aws/, ~/.gcloud/, ~/.kube/config, ~/.npmrc, ~/.pypirc, terraform.tfstate, *.tfvars\r\n[aigate] deny_exec: curl, wget, nc, ncat, netcat, ssh, scp, rsync, ftp, kubectl delete, kubectl exec\r\n[aigate] allow_net: api.anthropic.com, api.openai.com, api.github.com, registry.npmjs.org, proxy.golang.org (all other outbound connections will be blocked)\r\n[aigate] mask_stdout: openai, anthropic, aws_key, github, bearer; +1 custom pattern(s)\r\n23:58:05 INFO starting bwrap network-filtered sandbox allow_net=[\"api.anthropic.com\",\"api.openai.com\",\"api.github.com\",\"registry.npmjs.org\",\"proxy.golang.org\"] dns_servers=[\"1.1.1.1\",\"1.0.0.1\",\"1.1.1.1\",\"1.0.0.1\",\"8.8.8.8\"]\r\n ▐▛███▜▌ Claude Code v2.1.97\r\n▝▜█████▛▘ Opus 4.6 (1M context) · Claude Max\r\n ▘▘ ▝▝ ~/Documents/workspace/axeforge/git/aigate\r\n ⎿  SessionStart:startup says: {\"content\":[{\"type\":\"text\",\"text\":\"\"}]}\r\n\r\n View Observations Live @ http://localhost:37777\r\n\r\n❯ what is 2+2? answer in one short sentence.\r\n\r\n● 4.\r\n\r\n\r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n❯ \r\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\r\n"] +[137.020879, "o", "\r\n\u001b[1;32m✓ claude (inside aigate sandbox) answered:\u001b[0m \u001b[1;33m4.\u001b[0m\r\n"] diff --git a/docs/aigate-demo.gif b/docs/aigate-demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8654746edc69aed8db3813a3817fba16b0451e7 GIT binary patch literal 190902 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

s75y}wz8_BPN+P% zDev+x3qaMM4E?=Z0#e`?zz3LTZi2>mzRf#tm1mDkfUThQgAdxF&IkV9R=Ck$E&vPy z+~^bdlxz?JY$$?w367PbV>`n{P|eBtQBl&BJeuP$o;MBylaI@?7=gf*S(>;Zh?THm zr1bKwoi8#h;^x1+JkQP=0Q1L@0|f&L3S=j$&`>a_!$!aZU{IU@?^mS1hk@Ay-CXw;7LGRN!`>S9?t0xK|$Q06LIBqRH zGH9H?Z1{?tA}+>aBZf2tiWw2w@FZEoJwZjRC$_^Q#82%8D>67jAJsq3v$PnHasEY? z0t-NL0s_=}0A>kb8DIr|0Ym_Ya_y`z≪luMhry{QXy>20ZmVOEZ4UQZ96tAJ2VK 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

+e5s67 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 .env + + # ── intro ──────────────────────────────────────────────────────────────── + - comment: "aigate — wrap any command in an OS-level sandbox for AI agents" + pause: 1.8 + - comment: "every example below uses the default rules from ~/.aigate/config.yaml" + pause: 2.0 + + # ── 1) deny_exec ───────────────────────────────────────────────────────── + - clear: true + pause: 0.4 + - comment: "1) deny_exec — shell tools blocked even when installed on the host" + pause: 1.4 + - type: "aigate run -- curl https://api.github.com" + pause: 3.5 + + # ── 2) deny_read (synthetic .env, no real secrets) ─────────────────────── + - clear: true + pause: 0.4 + - comment: "2) deny_read — secrets are hidden from the sandboxed process" + pause: 1.4 + - comment: "first, what the host sees:" + pause: 0.8 + - type: "cat .env" + pause: 2.2 + - comment: "now from inside the sandbox:" + pause: 0.8 + - type: "aigate run -- cat .env" + pause: 4.0 + + # ── 3) mask_stdout ─────────────────────────────────────────────────────── + - clear: true + pause: 0.4 + - comment: "3) mask_stdout — secrets that slip out are redacted on the way back" + pause: 1.4 + - type: "aigate run -- printf 'openai key: sk-proj-abc123def456ghi789\\n'" + pause: 4.0 + + # ── 4) wrap interactive claude ─────────────────────────────────────────── + # Interactive TUIs can't be typed into from a plain recorded shell, so + # we drive claude in a detached tmux session: launch it inside aigate, + # send the prompt via `tmux send-keys`, wait for the answer, then + # `tmux capture-pane` the rendered TUI back into the visible recording. + # No yoink/tmux machinery is shown to the viewer — they only see what + # they would themselves type at the prompt. + - clear: true + pause: 0.4 + - comment: "4) wrap claude itself — the full interactive TUI works the same way" + pause: 1.8 + - bash: | + tmux kill-session -t aigate-demo-cl 2>/dev/null || true + # Launch claude with the repo as cwd — it's an already-trusted folder, + # so claude skips its first-run "trust this folder" dialog. (Launching + # from /tmp/aigate-demo would block on that prompt forever.) + tmux new-session -d -s aigate-demo-cl -x 130 -y 22 -c "$_AIGATE_REPO" "$_AIGATE_BIN run -- claude" + # Let claude finish booting (sandbox setup + TUI splash + plugin load). + sleep 6 + tmux send-keys -t aigate-demo-cl "what is 2+2? answer in one short sentence." Enter + # Claude latency inside the sandbox is ~60–90s on first call (cold + # start + post-answer "stop hooks"). We wait long enough for the + # status spinner to clear so the captured pane shows a clean answer + # frame, not a half-rendered cogitating one. The cast's idle_time_limit + # collapses this dead air into ~2s in the rendered GIF. + sleep 95 + # Render a green prompt line so the captured pane reads as a real + # session, then dump the pane. Trim trailing blank rows AND drop + # claude's transient status spinner lines ("Cogitating…", + # "Fiddle-faddling…", "running stop hooks", etc) — they're noise + # by the time the answer is in. + printf '\e[1;32m$\e[0m aigate run -- claude\n' + tmux capture-pane -p -t aigate-demo-cl \ + | sed -E '/(Cogitating|Osmosing|Fiddle-faddling|Wrangling|running (stop|pre)? ?hooks|esc to interrupt)/d' \ + | sed -e :a -e '/^[[:space:]]*$/{$d;N;ba' -e '}' + # Highlight the answer one more time, BELOW the pane, in a colour + # that pops — the answer line inside claude's TUI is small and easy + # to miss in a fast-playing GIF. + printf '\n\e[1;32m✓ claude (inside aigate sandbox) answered:\e[0m \e[1;33m4.\e[0m\n' + tmux kill-session -t aigate-demo-cl 2>/dev/null || true + # Hold the final answer frame long enough that it's unmissable on + # loop. The render's `idle_time_limit: 2` caps silent gaps at 2s, so + # we emit a no-op write (space+backspace) once a second for 8s to + # generate "activity" the renderer won't compress away. + for _ in 1 2 3 4 5 6 7 8; do printf ' \b'; sleep 1; done + - pause: 0.4 diff --git a/go.mod b/go.mod index 71379bf..5da2446 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/AxeForging/aigate -go 1.25.8 +go 1.25.10 require ( github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 diff --git a/internal/web/handlers.go b/internal/web/handlers.go new file mode 100644 index 0000000..bb04eec --- /dev/null +++ b/internal/web/handlers.go @@ -0,0 +1,22 @@ +package web + +import ( + "encoding/json" + "net/http" +) + +func (s *Server) handleIndex(w http.ResponseWriter, r *http.Request) { + if r.URL.Path != "/" { + http.NotFound(w, r) + return + } + w.Header().Set("Content-Type", "text/html; charset=utf-8") + if err := s.templates.ExecuteTemplate(w, "layout", s.buildOverview()); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + } +} + +func (s *Server) handleOverview(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(s.buildOverview()) +} diff --git a/internal/web/server.go b/internal/web/server.go new file mode 100644 index 0000000..92b3f56 --- /dev/null +++ b/internal/web/server.go @@ -0,0 +1,177 @@ +package web + +import ( + "context" + "embed" + "errors" + "fmt" + "html/template" + "io/fs" + "net/http" + "sort" + "time" + + "github.com/AxeForging/aigate/domain" + "github.com/AxeForging/aigate/services" +) + +//go:embed templates/*.html.tmpl +var templatesFS embed.FS + +//go:embed static +var staticFS embed.FS + +type Server struct { + addr string + mux *http.ServeMux + templates *template.Template + configSvc *services.ConfigService + auditSvc *services.AuditService +} + +type Options struct { + Addr string + ConfigSvc *services.ConfigService + AuditSvc *services.AuditService +} + +func New(opts Options) (*Server, error) { + if opts.Addr == "" { + opts.Addr = "127.0.0.1:8080" + } + if opts.ConfigSvc == nil { + opts.ConfigSvc = services.NewConfigService() + } + if opts.AuditSvc == nil { + opts.AuditSvc = services.NewAuditService(opts.ConfigSvc) + } + t, err := template.ParseFS(templatesFS, "templates/*.html.tmpl") + if err != nil { + return nil, fmt.Errorf("parse templates: %w", err) + } + s := &Server{ + addr: opts.Addr, + mux: http.NewServeMux(), + templates: t, + configSvc: opts.ConfigSvc, + auditSvc: opts.AuditSvc, + } + s.routes() + return s, nil +} + +func (s *Server) Addr() string { return s.addr } + +func (s *Server) Handler() http.Handler { return s.mux } + +func (s *Server) ListenAndServe(ctx context.Context) error { + srv := &http.Server{Addr: s.addr, Handler: s.mux} + go func() { + <-ctx.Done() + shutdownCtx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + defer cancel() + _ = srv.Shutdown(shutdownCtx) + }() + err := srv.ListenAndServe() + if errors.Is(err, http.ErrServerClosed) { + return nil + } + return err +} + +func (s *Server) routes() { + sub, _ := fs.Sub(staticFS, "static") + s.mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.FS(sub)))) + s.mux.HandleFunc("/", s.handleIndex) + s.mux.HandleFunc("/api/overview", s.handleOverview) +} + +type overview struct { + Initialized bool `json:"initialized"` + ConfigPath string `json:"config_path"` + AuditPath string `json:"audit_path"` + Rules rulesOverview `json:"rules"` + Counters countersOverview `json:"counters"` + Events []services.AuditEvent `json:"events"` + LastBlocked *services.AuditEvent `json:"last_blocked,omitempty"` +} + +type rulesOverview struct { + DenyRead []string `json:"deny_read"` + DenyExec []string `json:"deny_exec"` + AllowNet []string `json:"allow_net"` +} + +type countersOverview struct { + BlockedTotal int `json:"blocked_total"` + BlockedToday int `json:"blocked_today"` + RunsTotal int `json:"runs_total"` + ByRule map[string]int `json:"by_rule"` + BySource map[string]int `json:"by_source"` +} + +func (s *Server) buildOverview() overview { + cfgPath, _ := s.configSvc.GlobalConfigPath() + auditPath, _ := s.auditSvc.Path() + data := overview{ + ConfigPath: cfgPath, + AuditPath: auditPath, + Rules: rulesOverview{ + DenyRead: []string{}, + DenyExec: []string{}, + AllowNet: []string{}, + }, + Counters: countersOverview{ + ByRule: map[string]int{"deny_read": 0, "deny_exec": 0, "allow_net": 0}, + BySource: map[string]int{}, + }, + } + cfg, err := s.configSvc.LoadGlobal() + if err == nil && cfg != nil { + data.Initialized = true + data.Rules = rulesFromConfig(*cfg) + } + events, err := s.auditSvc.Recent(200) + if err == nil { + data.Events = events + } + today := time.Now().Format("2006-01-02") + for _, event := range data.Events { + if event.Kind == "run_started" { + data.Counters.RunsTotal++ + continue + } + if event.Kind != "blocked" { + continue + } + data.Counters.BlockedTotal++ + if event.Time.Format("2006-01-02") == today { + data.Counters.BlockedToday++ + } + if event.Rule != "" { + data.Counters.ByRule[event.Rule]++ + } + if event.Source != "" { + data.Counters.BySource[event.Source]++ + } + if data.LastBlocked == nil || event.Time.After(data.LastBlocked.Time) { + copyEvent := event + data.LastBlocked = ©Event + } + } + sort.SliceStable(data.Events, func(i, j int) bool { + return data.Events[i].Time.After(data.Events[j].Time) + }) + if len(data.Events) > 80 { + data.Events = data.Events[:80] + } + return data +} + +func rulesFromConfig(cfg domain.Config) rulesOverview { + return rulesOverview{ + DenyRead: append([]string(nil), cfg.DenyRead...), + DenyExec: append([]string(nil), cfg.DenyExec...), + AllowNet: append([]string(nil), cfg.AllowNet...), + } +} diff --git a/internal/web/static/app.js b/internal/web/static/app.js new file mode 100644 index 0000000..49df54b --- /dev/null +++ b/internal/web/static/app.js @@ -0,0 +1,209 @@ +const state = { + refreshTimer: null, + events: [], + filters: { + query: '', + kind: '', + rule: '', + source: '', + }, +}; + +const labels = { + deny_read: 'protected reads', + deny_exec: 'blocked commands', + allow_net: 'network boundary', +}; + +const colors = { + deny_read: 'oklch(68% 0.13 246)', + deny_exec: 'oklch(67% 0.19 28)', + allow_net: 'oklch(72% 0.15 157)', +}; + +function text(selector, value) { + const el = document.querySelector(selector); + if (!el) return; + if (el.textContent !== String(value)) { + el.textContent = value; + el.animate([ + { transform: 'translateY(6px)', opacity: 0.55 }, + { transform: 'translateY(0)', opacity: 1 }, + ], { duration: 260, easing: 'cubic-bezier(0.16, 1, 0.3, 1)' }); + } +} + +function list(selector, items, empty) { + const el = document.querySelector(selector); + if (!el) return; + const values = items && items.length ? items : [empty]; + el.innerHTML = values.map((item, index) => { + const cls = items && items.length ? '' : ' class="muted"'; + return `${escapeHtml(item)}`; + }).join(''); +} + +function renderBars(counters) { + const el = document.querySelector('[data-field="bars"]'); + if (!el) return; + const entries = Object.entries(counters.by_rule || {}); + const max = Math.max(1, ...entries.map(([, value]) => value)); + el.innerHTML = entries.map(([key, value], index) => { + const width = Math.max(4, Math.round((value / max) * 100)); + return ` +

+
+ ${escapeHtml(labels[key] || key)} + ${value} +
+
+
+ `; + }).join(''); +} + +function renderLatest(event) { + const el = document.querySelector('[data-field="latest-block"]'); + if (!el) return; + if (!event) { + el.innerHTML = 'quietNo blocked sandbox activity has been captured yet.Run commands through aigate and this panel will fill in.'; + return; + } + el.innerHTML = ` + ${escapeHtml(event.rule || 'blocked')} + ${escapeHtml(event.command || 'unknown command')} + ${escapeHtml(event.detail || event.source || '')} + `; +} + +function renderEvents(events) { + const el = document.querySelector('[data-list="events"]'); + if (!el) return; + if (!events || !events.length) { + const hasFilters = Object.values(state.filters).some(Boolean); + const message = hasFilters + ? 'No events match the active filters.' + : '`aigate run -- ...` will start populating this view.'; + el.innerHTML = `
No audit events shown.${escapeHtml(message)}
`; + updateFilterCount(0, state.events.length); + return; + } + el.innerHTML = events.map((event, index) => ` +
+ + ${escapeHtml(event.kind || '')} + ${escapeHtml(event.rule || event.source || '')} +

+ ${escapeHtml(event.command || event.detail || '')} + ${event.detail ? `${escapeHtml(event.detail)}` : ''} +

+
+ `).join(''); + updateFilterCount(events.length, state.events.length); +} + +function applyFilters() { + const query = state.filters.query.toLowerCase(); + const filtered = state.events.filter((event) => { + if (state.filters.kind && event.kind !== state.filters.kind) return false; + if (state.filters.rule && event.rule !== state.filters.rule) return false; + if (state.filters.source && event.source !== state.filters.source) return false; + if (!query) return true; + const haystack = [ + event.kind, + event.rule, + event.source, + event.command, + event.detail, + event.work_dir, + ].filter(Boolean).join(' ').toLowerCase(); + return haystack.includes(query); + }); + renderEvents(filtered); +} + +function updateFilterCount(shown, total) { + const el = document.querySelector('[data-field="filter-count"]'); + if (!el) return; + el.textContent = `${shown} shown / ${total} total`; +} + +function renderSourceOptions(events) { + const el = document.querySelector('[data-filter="source"]'); + if (!el) return; + const current = el.value; + const sources = [...new Set(events.map((event) => event.source).filter(Boolean))].sort(); + el.innerHTML = '' + sources.map((source) => ( + `` + )).join(''); + if (sources.includes(current)) { + el.value = current; + } else { + state.filters.source = ''; + } +} + +async function refresh() { + const res = await fetch('/api/overview', { headers: { accept: 'application/json' } }); + if (!res.ok) return; + const data = await res.json(); + text('[data-field="blocked-total"]', data.counters.blocked_total); + text('[data-field="blocked-today"]', data.counters.blocked_today); + text('[data-field="runs-total"]', data.counters.runs_total); + text('[data-field="rule-read"]', data.rules.deny_read.length); + text('[data-field="rule-exec"]', data.rules.deny_exec.length); + text('[data-field="rule-net"]', data.rules.allow_net.length); + list('[data-list="deny-read"]', data.rules.deny_read, 'none'); + list('[data-list="deny-exec"]', data.rules.deny_exec, 'none'); + list('[data-list="allow-net"]', data.rules.allow_net, 'all outbound allowed'); + renderBars(data.counters); + renderLatest(data.last_blocked); + state.events = data.events || []; + renderSourceOptions(state.events); + applyFilters(); +} + +function formatTime(value) { + const date = new Date(value); + if (Number.isNaN(date.getTime())) return ''; + return date.toLocaleString([], { + month: 'short', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + }); +} + +function escapeHtml(value) { + return String(value) + .replaceAll('&', '&') + .replaceAll('<', '<') + .replaceAll('>', '>') + .replaceAll('"', '"') + .replaceAll("'", '''); +} + +document.querySelector('[data-action="refresh"]')?.addEventListener('click', refresh); +document.querySelector('[data-action="clear-filters"]')?.addEventListener('click', () => { + state.filters = { query: '', kind: '', rule: '', source: '' }; + document.querySelectorAll('[data-filter]').forEach((control) => { + control.value = ''; + }); + applyFilters(); +}); +document.querySelectorAll('[data-filter]').forEach((control) => { + control.addEventListener('input', () => { + state.filters[control.dataset.filter] = control.value; + applyFilters(); + }); +}); +renderBars({ + by_rule: { + deny_read: 0, + deny_exec: 0, + allow_net: 0, + }, +}); +refresh(); +state.refreshTimer = setInterval(refresh, 5000); diff --git a/internal/web/static/style.css b/internal/web/static/style.css new file mode 100644 index 0000000..78670db --- /dev/null +++ b/internal/web/static/style.css @@ -0,0 +1,731 @@ +:root { + color-scheme: dark; + --bg: oklch(11% 0.018 252); + --bg-2: oklch(14% 0.02 252); + --panel: oklch(18% 0.022 252 / 0.9); + --panel-strong: oklch(22% 0.026 252 / 0.94); + --line: oklch(88% 0.018 76 / 0.13); + --line-strong: oklch(88% 0.018 76 / 0.2); + --text: oklch(96% 0.012 78); + --muted: oklch(70% 0.035 252); + --soft: oklch(82% 0.026 78); + --forge: oklch(68% 0.21 41); + --forge-deep: oklch(56% 0.19 35); + --green: oklch(72% 0.15 157); + --red: oklch(67% 0.19 28); + --blue: oklch(68% 0.13 246); + --shadow: 0 28px 80px oklch(4% 0.012 252 / 0.48); + --radius-lg: 14px; + --radius-md: 9px; + --space-xs: 0.5rem; + --space-sm: 0.75rem; + --space-md: 1rem; + --space-lg: 1.5rem; + --space-xl: 2rem; + --space-2xl: 3rem; + font-family: "Aptos Display", "Segoe UI Variable", "Helvetica Neue", Arial, sans-serif; + font-variant-numeric: tabular-nums; +} + +* { box-sizing: border-box; } + +html { + background: var(--bg); + scroll-behavior: smooth; +} + +body { + min-height: 100dvh; + margin: 0; + overflow-x: hidden; + background: + radial-gradient(circle at 0% 0%, oklch(48% 0.17 35 / 0.28), transparent 24rem), + radial-gradient(circle at 100% 8%, oklch(68% 0.21 41 / 0.13), transparent 28rem), + linear-gradient(145deg, oklch(10% 0.018 252), oklch(13% 0.02 260) 48%, oklch(11% 0.022 20)); + color: var(--text); +} + +body::after { + position: fixed; + inset: 0; + z-index: -2; + pointer-events: none; + content: ""; + opacity: 0.24; + background-image: + linear-gradient(oklch(92% 0.02 78 / 0.045) 1px, transparent 1px), + linear-gradient(90deg, oklch(92% 0.02 78 / 0.035) 1px, transparent 1px); + background-size: 44px 44px; + mask-image: linear-gradient(to bottom, black 0 68%, transparent 100%); +} + +button, +input, +select { + font: inherit; +} + +button { + min-height: 40px; + border: 1px solid oklch(80% 0.1 45 / 0.34); + border-radius: 8px; + background: linear-gradient(180deg, oklch(66% 0.21 41 / 0.18), oklch(42% 0.15 38 / 0.12)); + color: oklch(88% 0.105 60); + cursor: pointer; + font-weight: 800; + letter-spacing: 0.01em; + padding: 0.68rem 0.9rem; + transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1), border-color 180ms ease, background 180ms ease; +} + +button:hover { + border-color: oklch(78% 0.16 48 / 0.74); + background: linear-gradient(180deg, oklch(68% 0.21 41 / 0.28), oklch(45% 0.16 38 / 0.16)); +} + +button:focus-visible, +input:focus-visible, +select:focus-visible { + outline: 2px solid oklch(78% 0.16 48 / 0.86); + outline-offset: 3px; +} + +button:active { transform: translateY(1px) scale(0.99); } + +.ambient-grid { + position: fixed; + inset: auto -18vw -24vh auto; + z-index: -1; + width: min(62vw, 760px); + aspect-ratio: 1; + border: 1px solid oklch(72% 0.18 42 / 0.14); + border-radius: 50%; + background: + radial-gradient(circle, transparent 0 42%, oklch(68% 0.18 42 / 0.08) 43% 44%, transparent 45%), + repeating-conic-gradient(from 18deg, oklch(68% 0.19 42 / 0.13) 0deg 3deg, transparent 3deg 16deg); + opacity: 0.55; + animation: slow-spin 56s linear infinite; +} + +.shell { + width: min(1480px, calc(100% - 32px)); + margin: 0 auto; + padding: 28px 0 56px; +} + +.topbar { + display: grid; + grid-template-columns: 1fr auto; + align-items: end; + gap: var(--space-lg); + margin-bottom: var(--space-lg); +} + +.brand-lockup { + display: flex; + align-items: center; + gap: var(--space-md); + min-width: 0; +} + +.brand-mark { + display: grid; + flex: 0 0 54px; + width: 54px; + height: 54px; + place-items: center; + border: 1px solid oklch(78% 0.15 44 / 0.34); + border-radius: 12px; + background: + linear-gradient(135deg, oklch(68% 0.21 41), oklch(52% 0.19 31)), + var(--forge); + box-shadow: 0 14px 34px oklch(48% 0.2 36 / 0.28); + color: oklch(98% 0.01 78); + font-weight: 950; + letter-spacing: -0.08em; +} + +.eyebrow, +.panel-label { + margin: 0 0 8px; + color: oklch(82% 0.07 58); + font: 820 0.72rem/1 "Segoe UI Variable", Arial, sans-serif; + letter-spacing: 0.1em; + text-transform: uppercase; +} + +h1 { + max-width: 920px; + margin: 0; + color: var(--text); + font-size: clamp(2.2rem, 5vw, 5.8rem); + font-weight: 920; + letter-spacing: -0.055em; + line-height: 0.88; + text-wrap: balance; +} + +h2 { + margin: 0; + font-size: 1.05rem; + font-weight: 820; + letter-spacing: -0.015em; +} + +.status-pill { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.62rem; + min-width: 158px; + border: 1px solid oklch(70% 0.18 28 / 0.34); + border-radius: 999px; + padding: 0.72rem 0.86rem; + color: var(--red); + background: oklch(30% 0.1 28 / 0.13); + font: 820 0.78rem/1 "Segoe UI Variable", Arial, sans-serif; + text-transform: uppercase; +} + +.status-pill span { + width: 0.55rem; + height: 0.55rem; + border-radius: 50%; + background: currentColor; + box-shadow: 0 0 18px currentColor; + animation: breathe 1.7s ease-in-out infinite; +} + +.status-pill.is-ready { + color: var(--green); + border-color: oklch(74% 0.14 157 / 0.34); + background: oklch(36% 0.1 157 / 0.13); +} + +.hero-grid, +.dashboard-grid { + display: grid; + gap: var(--space-md); +} + +.hero-grid { + grid-template-columns: minmax(0, 1.55fr) minmax(310px, 0.78fr); + margin-bottom: var(--space-md); +} + +.scoreboard, +.last-block, +.panel { + position: relative; + overflow: hidden; + border: 1px solid var(--line); + border-radius: var(--radius-lg); + background: + linear-gradient(145deg, var(--panel-strong), var(--panel)), + var(--panel); + box-shadow: var(--shadow); +} + +.scoreboard::before, +.panel::before, +.last-block::before { + position: absolute; + inset: 0; + pointer-events: none; + content: ""; + background: + radial-gradient(circle at 12% 0%, oklch(70% 0.2 43 / 0.14), transparent 18rem), + linear-gradient(120deg, oklch(100% 0 0 / 0.08), transparent 22%, transparent 72%, oklch(68% 0.2 41 / 0.08)); + opacity: 0.72; +} + +.scoreboard { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(190px, 0.32fr); + min-height: 294px; +} + +.score-main { + position: relative; + display: grid; + align-content: space-between; + padding: 28px; +} + +.score-main p, +.score-side span, +.last-block span, +.last-block small, +.path-note, +.event-row span, +.event-row p, +.empty-state span { + color: var(--muted); +} + +.score-main p { + margin: 0; + font-weight: 780; + letter-spacing: 0.01em; +} + +.score-main strong { + display: block; + color: var(--forge); + font: 950 clamp(5.4rem, 15vw, 14rem)/0.76 "Segoe UI Variable", Arial, sans-serif; + letter-spacing: -0.08em; + text-shadow: 0 0 42px oklch(58% 0.2 40 / 0.24); +} + +.scanline { + position: absolute; + inset: auto 24px 24px 24px; + height: 46px; + border-top: 1px solid oklch(78% 0.15 44 / 0.34); + background: linear-gradient(90deg, transparent, oklch(68% 0.19 42 / 0.2), transparent); + opacity: 0.72; + animation: scan 2.8s cubic-bezier(0.16, 1, 0.3, 1) infinite; +} + +.score-side { + display: grid; + border-inline-start: 1px solid var(--line); +} + +.score-side div { + display: grid; + align-content: end; + gap: 10px; + padding: 22px; +} + +.score-side div + div { border-top: 1px solid var(--line); } + +.score-side strong, +.rule-counters strong { + font: 900 2.1rem/1 "Segoe UI Variable", Arial, sans-serif; + letter-spacing: -0.04em; +} + +.score-side div:first-child strong { color: var(--red); } +.score-side div:last-child strong { color: var(--blue); } + +.last-block { + min-height: 294px; + padding: 24px; +} + +.last-block > * { position: relative; } + +.last-block div:last-child { + display: grid; + align-content: end; + min-height: 198px; + gap: 10px; +} + +.last-block strong { + color: oklch(84% 0.12 58); + font-size: 1.8rem; + letter-spacing: -0.03em; +} + +.last-block small { line-height: 1.5; } + +.radar { + position: absolute; + inset: 18px 18px auto auto; + width: 92px; + aspect-ratio: 1; + border: 1px solid oklch(75% 0.16 44 / 0.28); + border-radius: 50%; + background: + radial-gradient(circle, transparent 0 30%, oklch(70% 0.18 43 / 0.13) 31% 32%, transparent 33% 58%, oklch(70% 0.18 43 / 0.12) 59% 60%, transparent 61%), + conic-gradient(from 0deg, oklch(68% 0.2 41 / 0.34), transparent 72deg); + animation: slow-spin 5.6s linear infinite; +} + +.radar span { + position: absolute; + inset: 42px 8px auto 44px; + height: 1px; + background: var(--forge); + transform-origin: left center; +} + +.dashboard-grid { + grid-template-columns: minmax(0, 1fr) 390px; + margin-bottom: var(--space-md); +} + +.panel { padding: 22px; } + +.panel-head { + position: relative; + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + gap: var(--space-md); + margin-bottom: 18px; +} + +.rule-counters { + position: relative; + display: grid; + grid-template-columns: repeat(3, 1fr); + border: 1px solid var(--line); + border-radius: var(--radius-md); + background: oklch(100% 0 0 / 0.026); +} + +.rule-counters div { + padding: 16px; +} + +.rule-counters div + div { border-inline-start: 1px solid var(--line); } +.rule-counters span { display: block; color: var(--muted); margin-bottom: 8px; } +.rule-counters div:nth-child(1) strong { color: var(--blue); } +.rule-counters div:nth-child(2) strong { color: var(--red); } +.rule-counters div:nth-child(3) strong { color: var(--green); } + +.rule-lists { + position: relative; + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 18px; + margin-top: 20px; +} + +.rule-lists h2 { + margin-bottom: 10px; + font-size: 0.92rem; +} + +ul { + display: flex; + flex-wrap: wrap; + gap: 8px; + list-style: none; + margin: 0; + padding: 0; +} + +li { + max-width: 100%; + overflow-wrap: anywhere; + border: 1px solid oklch(88% 0.018 76 / 0.13); + border-radius: 7px; + padding: 0.44rem 0.6rem; + color: var(--soft); + background: oklch(100% 0 0 / 0.045); + font: 720 0.82rem/1.1 "Cascadia Mono", "SFMono-Regular", Consolas, monospace; +} + +li.muted { color: var(--muted); } + +.breakdown-panel { + display: grid; + align-content: start; +} + +.bars { + position: relative; + display: grid; + gap: 14px; + margin: 20px 0; +} + +.bar-row { + display: grid; + gap: 8px; + animation: rise 360ms cubic-bezier(0.16, 1, 0.3, 1) both; +} + +.bar-meta { + display: flex; + justify-content: space-between; + color: var(--muted); + font-size: 0.86rem; +} + +.bar-track { + height: 12px; + overflow: hidden; + border: 1px solid oklch(100% 0 0 / 0.08); + border-radius: 999px; + background: oklch(100% 0 0 / 0.045); +} + +.bar-fill { + width: var(--value); + height: 100%; + border-radius: inherit; + background: var(--bar-color, var(--forge)); + box-shadow: 0 0 24px color-mix(in oklch, var(--bar-color, var(--forge)) 36%, transparent); + transition: width 420ms cubic-bezier(0.16, 1, 0.3, 1); +} + +.path-note { + position: relative; + margin: 0; + font: 0.76rem/1.45 "Cascadia Mono", "SFMono-Regular", Consolas, monospace; + overflow-wrap: anywhere; +} + +.events-panel { padding: 0; } +.events-panel .panel-head { padding: 18px 22px 0; } + +.filters { + position: relative; + display: grid; + grid-template-columns: minmax(240px, 1fr) 150px 150px 150px auto auto; + align-items: end; + gap: 10px; + padding: 0 22px 18px; +} + +.filters label { + display: grid; + gap: 7px; +} + +.filters span, +.filters output { + color: var(--muted); + font: 820 0.72rem/1 "Segoe UI Variable", Arial, sans-serif; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.filters input, +.filters select { + width: 100%; + min-height: 40px; + border: 1px solid oklch(88% 0.018 76 / 0.14); + border-radius: 8px; + background: oklch(100% 0 0 / 0.055); + color: var(--text); + font: 650 0.9rem/1 "Segoe UI Variable", Arial, sans-serif; + outline: none; + padding: 0.58rem 0.7rem; + transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease; +} + +.filters input:focus, +.filters select:focus { + border-color: oklch(78% 0.16 48 / 0.68); + background: oklch(66% 0.2 41 / 0.08); + box-shadow: 0 0 0 3px oklch(66% 0.2 41 / 0.1); +} + +.filters select option { + background: oklch(17% 0.024 252); + color: var(--text); +} + +.filters output { + justify-self: end; + min-width: 128px; + border: 1px solid var(--line); + border-radius: 999px; + padding: 0.76rem 0.78rem; + text-align: center; + color: oklch(86% 0.09 58); + background: oklch(68% 0.2 41 / 0.07); +} + +.event-list { + position: relative; + display: grid; +} + +.event-row { + position: relative; + display: grid; + grid-template-columns: 138px 110px 116px minmax(0, 1fr); + align-items: center; + gap: var(--space-md); + border-top: 1px solid var(--line); + padding: 15px 22px; + animation: row-in 280ms cubic-bezier(0.16, 1, 0.3, 1) both; +} + +.event-row::before { + position: absolute; + inset: 10px 14px auto auto; + width: 9px; + height: 9px; + border-radius: 50%; + content: ""; + background: var(--green); + box-shadow: 0 0 16px currentColor; +} + +.event-row.rule-deny_read::before { background: var(--blue); } +.event-row.rule-deny_exec::before { background: var(--red); } +.event-row.rule-allow_net::before { background: var(--green); } + +.event-row time, +.event-row strong, +.event-row span { + font: 780 0.82rem/1 "Cascadia Mono", "SFMono-Regular", Consolas, monospace; +} + +.event-row p { + display: grid; + gap: 4px; + margin: 0; + overflow-wrap: anywhere; +} + +.event-row p b { + color: var(--soft); + font-weight: 700; +} + +.event-row p small { + color: var(--muted); + line-height: 1.35; +} + +.empty-state { + display: grid; + gap: 8px; + padding: 34px 22px; + border-top: 1px solid var(--line); +} + +@keyframes breathe { + 0%, 100% { transform: scale(0.88); opacity: 0.72; } + 50% { transform: scale(1.16); opacity: 1; } +} + +@keyframes scan { + 0% { transform: translateY(-110px); opacity: 0; } + 20%, 70% { opacity: 0.72; } + 100% { transform: translateY(26px); opacity: 0; } +} + +@keyframes slow-spin { + to { transform: rotate(360deg); } +} + +@keyframes row-in { + from { opacity: 0; transform: translateY(8px); } + to { opacity: 1; transform: translateY(0); } +} + +@keyframes rise { + from { opacity: 0; transform: translateX(-8px); } + to { opacity: 1; transform: translateX(0); } +} + +@media (prefers-reduced-motion: reduce) { + *, + *::before, + *::after { + animation-duration: 1ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; + } +} + +@media (max-width: 980px) { + .topbar, + .hero-grid, + .dashboard-grid, + .scoreboard, + .rule-lists { + grid-template-columns: 1fr; + } + + .topbar { + align-items: start; + } + + .score-side { + grid-template-columns: 1fr 1fr; + border-top: 1px solid var(--line); + border-inline-start: 0; + } + + .score-side div + div { + border-top: 0; + border-inline-start: 1px solid var(--line); + } + + .event-row { + grid-template-columns: 1fr; + gap: 7px; + padding-inline-end: 34px; + } + + .filters { + grid-template-columns: 1fr 1fr; + } + + .filters .search-box, + .filters output { + grid-column: 1 / -1; + } + + .filters output { + justify-self: stretch; + } +} + +@media (max-width: 560px) { + .shell { + width: min(100% - 20px, 1480px); + padding-top: 18px; + } + + .brand-lockup { + align-items: flex-start; + } + + .brand-mark { + flex-basis: 44px; + width: 44px; + height: 44px; + border-radius: 10px; + font-size: 0.84rem; + } + + .status-pill { + justify-self: start; + } + + .score-main, + .last-block, + .panel { + padding: 18px; + } + + .rule-counters { + grid-template-columns: 1fr; + } + + .rule-counters div + div { + border-top: 1px solid var(--line); + border-inline-start: 0; + } + + .score-side { + grid-template-columns: 1fr; + } + + .score-side div + div { + border-top: 1px solid var(--line); + border-inline-start: 0; + } + + .panel-head { + grid-template-columns: 1fr; + } + + .filters { + grid-template-columns: 1fr; + padding: 0 18px 18px; + } +} diff --git a/internal/web/templates/layout.html.tmpl b/internal/web/templates/layout.html.tmpl new file mode 100644 index 0000000..5d3ab5e --- /dev/null +++ b/internal/web/templates/layout.html.tmpl @@ -0,0 +1,160 @@ +{{define "layout"}} + + + + + + AxeForge AiGate + + + + +
+
+
+ AF +
+

AxeForge security console

+

AiGate command boundary

+
+
+
+ + {{if .Initialized}}initialized{{else}}not initialized{{end}} +
+
+ +
+
+
+

blocked attempts

+ {{.Counters.BlockedTotal}} + +
+
+
+ today + {{.Counters.BlockedToday}} +
+
+ runs observed + {{.Counters.RunsTotal}} +
+
+
+ +
+ +

last intercept

+
+ {{if .LastBlocked}} + {{.LastBlocked.Rule}} + {{.LastBlocked.Command}} + {{.LastBlocked.Detail}} + {{else}} + quiet + No blocked sandbox activity has been captured yet. + Run commands through aigate and this panel will fill in. + {{end}} +
+
+
+ +
+
+
+
+

active policy

+

Rules enforced by the operating system

+
+ +
+
+
deny read{{len .Rules.DenyRead}}
+
deny exec{{len .Rules.DenyExec}}
+
allow net{{len .Rules.AllowNet}}
+
+
+
+

Protected reads

+
    {{range .Rules.DenyRead}}
  • {{.}}
  • {{else}}
  • none
  • {{end}}
+
+
+

Blocked commands

+
    {{range .Rules.DenyExec}}
  • {{.}}
  • {{else}}
  • none
  • {{end}}
+
+
+

Allowed network

+
    {{range .Rules.AllowNet}}
  • {{.}}
  • {{else}}
  • all outbound allowed
  • {{end}}
+
+
+
+ +
+

block mix

+

Where the sandbox is taking pressure

+
+

audit log: {{.AuditPath}}

+
+
+ +
+
+
+

timeline

+

Recent decisions

+
+ config: {{.ConfigPath}} +
+
+ + + + + + 0 shown +
+
+ {{range .Events}} +
+ + {{.Kind}} + {{.Rule}} +

{{.Command}}

+
+ {{else}} +
+ No audit events yet. + `aigate run -- ...` will start populating this view. +
+ {{end}} +
+
+
+ + + +{{end}} diff --git a/main.go b/main.go index 9bc5e7b..c25744f 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,13 @@ package main import ( + "context" "fmt" "os" "github.com/AxeForging/aigate/actions" "github.com/AxeForging/aigate/helpers" + "github.com/AxeForging/aigate/internal/web" "github.com/AxeForging/aigate/services" "github.com/urfave/cli" @@ -23,8 +25,9 @@ func main() { platform := services.DetectPlatform() configSvc := services.NewConfigService() + auditSvc := services.NewAuditService(configSvc) ruleSvc := services.NewRuleService() - runnerSvc := services.NewRunnerService(platform) + runnerSvc := services.NewRunnerServiceWithAudit(platform, auditSvc) initAction := actions.NewInitAction(configSvc) setupAction := actions.NewSetupAction(platform, configSvc) @@ -128,6 +131,30 @@ func main() { Usage: "Check sandbox prerequisites and show active isolation mode", Action: doctorAction.Execute, }, + { + Name: "serve", + Usage: "Run the local web dashboard", + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "addr", + Value: "127.0.0.1:8080", + Usage: "Address to listen on (host:port)", + EnvVar: "AIGATE_ADDR", + }, + }, + Action: func(c *cli.Context) error { + srv, err := web.New(web.Options{ + Addr: c.String("addr"), + ConfigSvc: configSvc, + AuditSvc: auditSvc, + }) + if err != nil { + return fmt.Errorf("init web server: %w", err) + } + fmt.Printf("\n Open http://%s in your browser.\n\n", srv.Addr()) + return srv.ListenAndServe(context.Background()) + }, + }, { Name: "help-ai", Usage: "Show AI-friendly usage examples", diff --git a/services/audit_service.go b/services/audit_service.go new file mode 100644 index 0000000..9114aad --- /dev/null +++ b/services/audit_service.go @@ -0,0 +1,205 @@ +package services + +import ( + "bufio" + "encoding/json" + "errors" + "fmt" + "io" + "os" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/AxeForging/aigate/domain" +) + +const auditLogFile = "audit.jsonl" + +// AuditEvent is a compact event record used by the local dashboard. +type AuditEvent struct { + Time time.Time `json:"time"` + Kind string `json:"kind"` + Rule string `json:"rule,omitempty"` + Command string `json:"command,omitempty"` + WorkDir string `json:"work_dir,omitempty"` + Source string `json:"source,omitempty"` + Detail string `json:"detail,omitempty"` + Counts map[string]int `json:"counts,omitempty"` + Meta map[string]string `json:"meta,omitempty"` +} + +type AuditService struct { + configSvc *ConfigService + mu sync.Mutex +} + +func NewAuditService(configSvc *ConfigService) *AuditService { + if configSvc == nil { + configSvc = NewConfigService() + } + return &AuditService{configSvc: configSvc} +} + +func (s *AuditService) Log(event AuditEvent) error { + if event.Time.IsZero() { + event.Time = time.Now() + } + path, err := s.Path() + if err != nil { + return err + } + if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { + return fmt.Errorf("create audit dir: %w", err) + } + b, err := json.Marshal(event) + if err != nil { + return fmt.Errorf("marshal audit event: %w", err) + } + s.mu.Lock() + defer s.mu.Unlock() + f, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0o644) + if err != nil { + return fmt.Errorf("open audit log: %w", err) + } + defer func() { _ = f.Close() }() + if _, err := f.Write(append(b, '\n')); err != nil { + return fmt.Errorf("write audit log: %w", err) + } + return nil +} + +func (s *AuditService) LogRunStarted(profile domain.SandboxProfile, cmd string, args []string) { + _ = s.Log(AuditEvent{ + Kind: "run_started", + Command: formatCommand(cmd, args), + WorkDir: profile.WorkDir, + Counts: map[string]int{ + "deny_read": len(profile.Config.DenyRead), + "deny_exec": len(profile.Config.DenyExec), + "allow_net": len(profile.Config.AllowNet), + "masking": len(profile.Config.MaskStdout.Presets) + len(profile.Config.MaskStdout.Patterns), + }, + }) +} + +func (s *AuditService) LogBlocked(profile domain.SandboxProfile, cmd string, args []string, rule, source, detail string) { + _ = s.Log(AuditEvent{ + Kind: "blocked", + Rule: rule, + Command: formatCommand(cmd, args), + WorkDir: profile.WorkDir, + Source: source, + Detail: detail, + }) +} + +func (s *AuditService) Path() (string, error) { + dir, err := s.configSvc.GlobalConfigDir() + if err != nil { + return "", err + } + return filepath.Join(dir, auditLogFile), nil +} + +func (s *AuditService) Recent(limit int) ([]AuditEvent, error) { + path, err := s.Path() + if err != nil { + return nil, err + } + f, err := os.Open(path) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + return nil, nil + } + return nil, err + } + defer func() { _ = f.Close() }() + + var events []AuditEvent + scanner := bufio.NewScanner(f) + for scanner.Scan() { + var event AuditEvent + if err := json.Unmarshal(scanner.Bytes(), &event); err == nil { + events = append(events, event) + } + } + if err := scanner.Err(); err != nil { + return nil, err + } + for i, j := 0, len(events)-1; i < j; i, j = i+1, j-1 { + events[i], events[j] = events[j], events[i] + } + if limit > 0 && len(events) > limit { + events = events[:limit] + } + return events, nil +} + +func formatCommand(cmd string, args []string) string { + if len(args) == 0 { + return cmd + } + return strings.Join(append([]string{cmd}, args...), " ") +} + +type auditWriter struct { + dst io.Writer + audit *AuditService + profile domain.SandboxProfile + cmd string + args []string + source string + buf string +} + +func NewAuditWriter(dst io.Writer, audit *AuditService, profile domain.SandboxProfile, cmd string, args []string, source string) io.Writer { + if dst == nil || audit == nil { + return dst + } + return &auditWriter{dst: dst, audit: audit, profile: profile, cmd: cmd, args: args, source: source} +} + +func (w *auditWriter) Write(p []byte) (int, error) { + n, err := w.dst.Write(p) + w.observe(string(p)) + return n, err +} + +func (w *auditWriter) observe(chunk string) { + w.buf += chunk + for { + idx := strings.IndexByte(w.buf, '\n') + if idx < 0 { + if len(w.buf) > 4096 { + w.inspect(w.buf) + w.buf = "" + } + return + } + line := w.buf[:idx] + w.buf = w.buf[idx+1:] + w.inspect(line) + } +} + +func (w *auditWriter) inspect(line string) { + line = strings.TrimSpace(line) + if line == "" || !strings.Contains(line, "[aigate]") { + return + } + rule := "" + switch { + case strings.Contains(line, "access denied"): + rule = "deny_read" + case strings.Contains(line, "blocked") || strings.Contains(line, "denied by sandbox policy"): + rule = "deny_exec" + case strings.Contains(line, "network"): + rule = "allow_net" + } + if rule == "" { + return + } + w.audit.LogBlocked(w.profile, w.cmd, w.args, rule, w.source, line) +} diff --git a/services/audit_service_test.go b/services/audit_service_test.go new file mode 100644 index 0000000..b6d9be8 --- /dev/null +++ b/services/audit_service_test.go @@ -0,0 +1,41 @@ +package services + +import ( + "path/filepath" + "testing" + + "github.com/AxeForging/aigate/domain" +) + +func TestAuditService_LogAndRecent(t *testing.T) { + t.Setenv("HOME", t.TempDir()) + configSvc := NewConfigService() + auditSvc := NewAuditService(configSvc) + + profile := domain.SandboxProfile{WorkDir: "/tmp/project"} + auditSvc.LogRunStarted(profile, "echo", []string{"hello"}) + auditSvc.LogBlocked(profile, "curl", []string{"example.test"}, "deny_exec", "preflight", "curl is blocked") + + events, err := auditSvc.Recent(10) + if err != nil { + t.Fatalf("Recent() error = %v", err) + } + if len(events) != 2 { + t.Fatalf("Recent() returned %d events, want 2", len(events)) + } + if events[0].Kind != "blocked" { + t.Fatalf("newest event kind = %q, want blocked", events[0].Kind) + } + if events[0].Command != "curl example.test" { + t.Fatalf("blocked command = %q", events[0].Command) + } + + path, err := auditSvc.Path() + if err != nil { + t.Fatalf("Path() error = %v", err) + } + wantSuffix := filepath.Join(".aigate", "audit.jsonl") + if len(path) < len(wantSuffix) || filepath.ToSlash(path[len(path)-len(wantSuffix):]) != filepath.ToSlash(wantSuffix) { + t.Fatalf("Path() = %q, want suffix %q", path, wantSuffix) + } +} diff --git a/services/runner_service.go b/services/runner_service.go index da83124..4f076bc 100644 --- a/services/runner_service.go +++ b/services/runner_service.go @@ -13,13 +13,21 @@ import ( type RunnerService struct { platform Platform + audit *AuditService } func NewRunnerService(platform Platform) *RunnerService { return &RunnerService{platform: platform} } +func NewRunnerServiceWithAudit(platform Platform, audit *AuditService) *RunnerService { + return &RunnerService{platform: platform, audit: audit} +} + func (s *RunnerService) Run(profile domain.SandboxProfile, cmd string, args []string) error { + if s.audit != nil { + s.audit.LogRunStarted(profile, cmd, args) + } // Extract the base command name for deny_exec checking baseName := filepath.Base(cmd) for _, denied := range profile.Config.DenyExec { @@ -29,6 +37,9 @@ func (s *RunnerService) Run(profile domain.SandboxProfile, cmd string, args []st if parts[0] == baseName || parts[0] == cmd { for _, arg := range args { if arg == parts[1] { + if s.audit != nil { + s.audit.LogBlocked(profile, cmd, args, "deny_exec", "preflight", fmt.Sprintf("%q with subcommand %q is in the deny_exec list", cmd, parts[1])) + } return fmt.Errorf("%w: %q with subcommand %q is in the deny_exec list", helpers.ErrCommandBlocked, cmd, parts[1]) } } @@ -36,6 +47,9 @@ func (s *RunnerService) Run(profile domain.SandboxProfile, cmd string, args []st } else { // Full command rule: block all usage if denied == baseName || denied == cmd { + if s.audit != nil { + s.audit.LogBlocked(profile, cmd, args, "deny_exec", "preflight", fmt.Sprintf("%q is in the deny_exec list", cmd)) + } return fmt.Errorf("%w: %q is in the deny_exec list", helpers.ErrCommandBlocked, cmd) } } @@ -48,6 +62,10 @@ func (s *RunnerService) Run(profile domain.SandboxProfile, cmd string, args []st if mw, ok := stderr.(*MaskingWriter); ok { defer mw.Flush() //nolint:errcheck } + if s.audit != nil { + stdout = NewAuditWriter(stdout, s.audit, profile, cmd, args, "stdout") + stderr = NewAuditWriter(stderr, s.audit, profile, cmd, args, "stderr") + } return s.platform.RunSandboxed(profile, cmd, args, stdout, stderr) }